有什么好的技术可以保持您在代码中的位置?


21

我了解使用书签来记住代码中的单个点。但是,如何跟踪他们正在研究的代码?例如:多个书签及其制作顺序。

例:

  1. 错误报告:“碰撞不在墙角上起作用”

    1. 错误的再现将其归结为某些不会碰撞的多边形。
    2. 冲突代码是由不可用的开发人员编写的。因此调查如下:

流的模式

在调查期间,尤其是在审查诸如Google之类的非代码项目时,可能会合理地期望人们放弃它们在代码中的位置(我是否已经查看过此代码路径?或者我正在调查哪个代码路径?到此功能等)。不可避免的中断也是如此(老板:我现在需要[Lengthy Pointless Report]等)

拥有一种技术或工具资源来提供一种跟踪代码中位置的方法将非常有用。


编辑:上面的示例仅供参考,而不是需要回答的实际问题。

表达这个问题的另一种方法是:

在学习新系统时,如何跟踪学习代码的方向?这不是要了解代码为什么要执行其工作(即应使用注释),而是要了解如何执行(仅通过阅读代码而不是注释来学习)。

Answers:


14

Bubbles接口试图通过一次显示一堆代码来解决此问题。(您在使用Google搜索时会陷入困境)。看起来很棒,但我还没有尝试过。 这个想法的版本是Visual Studio Ultimate的Visual Studio实现。


+1,因为这是解决该问题的实用方法。(这也很棒一点!)
Jess Telford

我几年前
脑子

似乎与您在Squeak和其他Smalltalks中可以执行的操作类似,在其中您可以打开新的代码浏览窗口,并且可以导航到所需的任何方法/类。
鲁道夫·奥拉

太棒了...我创建了一个小玩具应用程序,以类似的方式可视化您的互联网浏览(单击链接时,将添加一个新节点并将其链接回原点)。从来没有想过将其应用于代码可视化。
迈克尔·布朗

12

除了提到的所有伟大技术之外,我发现老式A3纸可以很好地解决这些问题。写下您的想法,并以思维导图的方式组织它们。


是的 迄今为止最好的答案。
Patrick Hughes

10

我的编辑器和调试器都可以跳转到函数的定义,并具有多级“后退”按钮,例如Web浏览器,可以返回到以前的状态。通常,这足以让我跟踪复杂的调试流程。具有源代码控制还可以帮助您投入大量精力。这给了我一条提交消息,解释了为什么我要尝试某些操作,以及在更改不起作用时快速撤消更改的快速方法。除此之外,一个简单的白板来列出潜在和已探究的潜在客户填补了我所有的空白。


1
很实用。我没有想到要以这种方式使用源代码控制。
杰西·特尔福德

哪个编辑器和调试器?
约翰·盖恩斯(John Gaines)

Vim和Green Hill的MULTI调试器。
Karl Bielefeldt

在Visual Studio中,后退是CTRL +-,前进是CTRL + =。
VitalyB 2011年

Eclipse可以在单独的面板中的光标下方显示当前符号的定义。

3

我跟踪的多种方式:

  • 写下来。两分钟后开会?写下您在做什么以及在哪里。我总是在旁边放笔和纸,以便在编写代码时写下来。
  • 书签。我可以设置10个带编号的书签。
  • Stacktrace。您可以轻松查看经过的代码的整个层次结构。我的编辑器还允许我复制堆栈跟踪并保存。下次打开编辑器时,可以加载stacktrace以进行快速导航。
  • 编辑器导航。转到基本成员,转到继承者,找到用法,转到参考,...

1

我使用简单的解决方案-在完成任务之前,请不要关闭任何东西。这意味着通常约有50个打开的窗口/选项卡中的其中一个具有某些功能,可以使我想起回到该状态时的想法。


这种方法的问题往往是如何跟踪思想/研究的多个并行分支?
杰西·特尔福德

1
我不认为这是一个问题-它们都以几乎相同的方式打开,并且我回到哪个分支都没关系。对于Web浏览器,这比IDE更有效,但这可能只是因为我当前的代码库实际上不是从概念上组织的。
汤姆·克拉克森

1

获得真正的开发人员工具/ IDE,让您如痴如醉。Vi,Emacs,Eclipse或其他任何东西(选择与最大的争论一样大,但这就是另一个问题),并学习正确使用它。不要像很多人一样,像记事本那样使用语法高亮的样式。学会使用热键,而不是依靠鼠标执行常见操作(太慢了)。大屏幕(最小1920x1200)是有益的。

我的开发工具已命名(较慢但有用的名称使它们持久化)和未命名(快速插入和删除)书签,向前和向后浏览以及参考查找全部,待办事项和开发人员(个人和全组织)注释附加到特定的源代码行。它可以在阳光下使用所有语言,而无需安装其他插件。

我使用六种语言编写由十多个或更多的100万加SLOC模块组成的代码库。显然,我不会一次处理所有这些内容,而只专注于一两个内容的一小部分,但是我可以通过一些操作导航到代码中依赖我所做工作的任何地方。


我同意适当的IDE是最好的。我使用vim的出色标记和标签跳跃功能。但是,它们都有局限性:标记是局部于缓冲区的,标记历史是线性的。对于复杂的情况,这还不够(因此要问这个问题)。
杰西·特尔福德

1
我是一名Vi专家,但是在准备编写一些简短脚本,花一些时间学习真正使用VIM或更改为具有功能设置工具的高级用户手中,可以看到使用该功能可以做什么。一种对您有用的方法,并花了一些时间来学习它。那就是我的意思。学习工具。一个好的商人不会责怪他的工具,一个好的程序员也不会。
mattnz'9

同意 我是vim的高级初学者(大部分时间都可以使用而无需思考,但是几乎没有花任何时间在表面上),所以我确定有些事情是我所不知道的。即使如此,我也无法想象在vi(m)中可以做诸如psr的答案之类的事情(至少不是从我的研究中得出)。
杰西·特尔福德

@Jess:标记不一定在本地缓冲。使用大写字母的标记是全球性的。
戴夫·柯比

@DaveKirby很棒-我喜欢学习有关vim的新东西:D
Jess Telford

1

使用Visual Studio,在调试会话中,您可以使用“调用堆栈”窗口(可以在中Debug / Windows / Call Stack使用快捷方式启用它Ctrl+Alt+c),也可以使用快捷方式来跟踪代码流。


1
和大多数调试器一样。问题更多是在手动浏览代码时(包括在代码库之外进行研究)。
杰西·特尔福德

1

令我惊讶的是,没有人提到可以创建调用图图的许多工具。我发现氧气对您有很大的帮助。您甚至不必承诺在整个程序中都使用doxygen,您只需标记对跟踪感兴趣的功能即可。


0

我为emacs 使用组织模式,这是一个超级概述工具。借助它,我可以编写一个大纲来模拟代码的调用堆栈,并包括指向源代码本身的直接链接(通过org-store-link)。您可以包含说明文字,网页链接等(例如,当您在Google上搜索魔术数字时)

这不是完美的。例如,大纲结构没有任何返回到某个级别的概念,因此很难跟踪执行路径,而不仅仅是堆栈。但这是我在纸上绘制图表的第二好东西。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.