了解别人代码的工具和最佳实践

时间:2009-09-01 19:24:58

标签: debugging ide code-analysis

有时人们需要挖掘别人的代码,理解它并重构/修复它。所以我想知道你用什么工具/做法来做到这一点?它不是关于任何特定的语言或平台,而是一般的一些建议 我自己发现在调试器下运行有问题的代码非常有用(如果可能的话),设置断点并逐步执行代码。
此外,我还使用了一些具有逆向工程功能的UML工具来展望全局。可视化对我来说非常有用 有一个工具,我已经使用了很多:Understand。它不是一个UML工具,但它有一堆代码可视化。例如,函数的控制流程图,它不是UML的一部分,但有时它非常有用 我听说有时人们会为他们想要学习的代码编写测试,但它并没有为我工作。有时我想要理解的代码不是很可测试 还有其他工具,如分析器,依赖检查器,记录器等。有没有人使用它取得任何成功?怎么样?
首先使用的是什么?下一步是什么?

5 个答案:

答案 0 :(得分:1)

我之前一直处于这种状况......这不是很有趣。我发现的最好的方法是编写单元测试来覆盖将要改变的区域。即使测试已经存在,这也可以让您体验api和要重构的代码的行为。此外,您还可以获得更多测试来验证替换实现。

答案 1 :(得分:1)

通常,我将这些类型的请求划分为两个阵营:

  1. 修复错误,而不是整个代码。在这种情况下,我倾向于阅读代码,看看我是否可以轻松地进行修复而不进行重大的重大更改,例如添加5行或更少的代码。这就是所做的改变就像是一次手术打击,对实现预期效果的影响微乎其微。

  2. 删除代码并提出更好的内容。在这种情况下,没有一个很好的方法来进行更改,或者有很多小的更改想要捆绑到一个迷你项目中,需要消化所有代码,这不是一个快速的小改动。将ASP站点放入最新的.Net框架就是一个例子。

  3. 确定某种变化是需要一些练习和经验来理解别人可能会说的话,“还有一件事,如果你能......”这可能是一个巨大的交易,但他们不这么认为,例如我们可以添加一个记录任何错误的小模块,并在发生不良事件时向我发送一封电子邮件,在所有其他要求得到解决之后可能不那么容易,如果代码无法发送邮件消息应该是什么做。

答案 2 :(得分:1)

请查看nWire。它是一个Eclipse插件,目前用于Java& PHP,它分析您的代码并提供代码探索,可视化和搜索工具。该工具是关于理解代码中的关联:类层次结构,调用,实例化以及其他所有内容。

我觉得挖掘成堆的代码非常有用(顺便说一句,对我来说,即使我自己的代码在几个月没有碰到它之后也会被疏远)。

答案 3 :(得分:0)

您是否正在寻找高级结构,如模块,命名空间和类设计?或者您是否正在尝试理解类的内部,例如具体的代码行如何工作?这是两种不同的分析工具。

答案 4 :(得分:0)

特定于平台的排序,但ReSharper非常适合于梳理.NET代码的隐藏含义。我喜欢“Find Usages Advanced”功能,您可以在其中查找集合,获取,实现等...