是的,可怕的"M"字。

你已经有了一个工作站源的控制和半万行源码,你没有写。该文件过时,它是批准和公布。原始开发者是LTAO,在下一项目的/启动/疯人院并未回答电子邮件。

你打算怎么做?

{最喜欢的编辑}和查询将让你开始你的洞穴通过gnarling胆量的代码的基础,但什么样的其他工具,应该在维持工程师的工具箱?

开始的球滚动;我不认为我能生活在没有 源-洞察力 C/C++洞穴探险.(免责声明:我不作为'em)。

有帮助吗?

解决方案

的最佳工具之一。净空间 ReSharper.这个工具已经救了我的时间在所有方面,开发生命周期。他们还帮助我生存的时候加入无证件的项目/方案。

  • 代码重构
  • 代码,导航
  • 分析代码

这些都是一些许多功能,帮助一个执行耗时的任务。

其他提示

就像吃大象-咬一口的时间:)

有时大幅画可以是一个真正的demotivator,你需要选择一个现并解决这一块一块的。

当然,仍然需要选择位开始上...这通常是驱动的多数通过用户/业务与最优先的具体变化的需要(在昨天...)但是,如果你有一点灵活性或熟悉情况时,指标常常是有用的。这里的工具随的技术和语言,但是工具 NDependJDepend, 任何建立在代指标(如在Visual Studio团队系统或各种可用日食插件)或类似的工具 来感受大小的副本,并粘贴的问题。

我们希望这些单元测试和复盖范围大于零,并因此一个良好的第一步总是得到什么测试可以在连续的一体化环境中,作为一个基础,增加更多的测试作为你学习。

并且正如其他人所说--假定选择的语言-一个很好的IDE代码,导航和自动化的重构是必须的(食、Visual Studio(有或没有ReSharper).

几鼓舞士气的书籍:

祝你好运:)

代码搜索引擎可以帮助您找到适合大量源代码的方法。

可以找到对语言敏感的源代码搜索引擎 在 SD源代码搜索引擎。它可以同时处理多种语言。 可以对特定语言中的模式执行搜索, 或跨语言的模式(例如“查找涉及TAX的标识符”)。 通过对语言令牌敏感,减少了误报的数量, 为用户节省时间。它了解C,C ++,C#,COBOL,Java,ECMAScript,Java,XML,Verilog,VHDL以及许多其他语言。

(我是工具架构师)。

我通常从Linux上的Emacs + CScope开始。 Visual Studio有一些检查工具,可以为您提供类似的Windows功能。 Doxygen也非常有用 - 即使源没有文档注释,它也会生成有用的文档。

我将运行一些UML工具(可能是带笔的简单笔记本=))和/或用于构建类,调用,方法层次结构(集成在IDE中)的工具。然后我会用调试器或简单的单元测试来观察动态。有了这些东西,我会尝试进行某种逆向工程来弄清楚设计。

在这种情况下,我会使用了解C ++

使用签名调查流程是了解鸟类的一个好方法。码。使用良好的脚本语言和一些mojo来使用它,为您自己的代码库构建高度自定义的签名调查,无论您的语言是什么都不是一项艰巨的任务。

错误跟踪软件,特别是如果它链接到你的源代码控制软件将是非常宝贵的,因为它可能会让你深入了解为什么做出一些糟糕的决定。如果维护程序员计划进行一些重构,这一点就更为重要了。

书面日志也很有用,因此您可以随时记录系统。

是的,打了一下头上的钉子。 unix shell和方便的Notepad ++是我在ColdFusion,PHP,Perl等维护工作时常用的。很高兴不切换编辑器,并追踪对名称/参数/变量的所有引用。

现在我只需右键单击并在Visual Studio中点击“查找所有引用”,这听起来像是作弊。 PHP人员非常嫉妒,因为他们被迫使用vi进行编辑。 ;)

关键工具将允许您导航(和编辑)代码库以帮助您理解。

有一些可以显示类关系的东西是非常有用的(如果使用OO语言)。当您想要衡量您将要进行的更改的影响时,显示(静态)调用树的能力也非常有用。

你提到了source-insight。一个长期运行的开源项目是源导航器。 在停滞一段时间后,看起来发展已经开始了。

我发现Lutz的Reflector对此有用,特别是当你混合使用代码和二进制文件时。你得到调用和依赖图(取决于,使用,暴露,实例化等),汇编图和一些很棒的插件。

NDepend是一个工具,专门用于 重新设计代码, 尤其是缠结的大遗产基地码 免责声明:我是一个工具的开发

报价 斯科特Hanselman写一次,在他的博客: "NDepend是给我了解我的应用程序的我没有前(...)一旦我意识到的深度和广度上的信息我看到它,我就像一个孩子在一家糖果店。"

一些NDepend的功能有用于再设计工程有:

您需要能够在整个代码库中导航。如果您最喜欢的IDE允许这样做,那么您可以使用索引器,例如了解C ++ (已引用), lxr ,或 OpenGrok

匆忙,你可以依靠 grep(1s)或 - 更好 - Ack

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top