Debugging 了解他人的工具和最佳实践';s代码

Debugging 了解他人的工具和最佳实践';s代码,debugging,ide,code-analysis,Debugging,Ide,Code Analysis,有时候,你需要深入研究别人的代码,理解它,也许还需要重构/修复它。所以我想知道你用什么工具/实践来做到这一点?它不是关于任何特定的语言或平台,而是一般的一些建议。 我自己发现在调试器下运行有问题的代码非常有用(当然,如果可能的话),设置断点并逐步完成代码。 此外,我还使用了一些具有逆向工程特性的UML工具来了解全局。可视化对我来说非常有效。 有一个工具,我已经用了很多次了:。它不是一个UML工具,但它有一系列代码的可视化。例如,功能的控制流程图,它不是UML的一部分,但有时非常有用。 我听说有时

有时候,你需要深入研究别人的代码,理解它,也许还需要重构/修复它。所以我想知道你用什么工具/实践来做到这一点?它不是关于任何特定的语言或平台,而是一般的一些建议。
我自己发现在调试器下运行有问题的代码非常有用(当然,如果可能的话),设置断点并逐步完成代码。
此外,我还使用了一些具有逆向工程特性的UML工具来了解全局。可视化对我来说非常有效。
有一个工具,我已经用了很多次了:。它不是一个UML工具,但它有一系列代码的可视化。例如,功能的控制流程图,它不是UML的一部分,但有时非常有用。
我听说有时人们会为他们想学习的代码编写测试,但这对我来说并不奏效。有时我想理解的代码不是很容易测试。
还有其他工具,如分析器、依赖性检查器、记录器等。有人成功地使用了它吗?怎么做?

首先使用什么?下一步是什么?

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

我以前就遇到过这种情况。。。没什么意思。我发现的最好的方法是编写单元测试来覆盖将要改变的领域。即使测试已经存在,这也会让您体验到api和要重构的代码行为。此外,您还可以获得更多的测试来验证替换实现。

通常,我将这类请求分为两类:

  • 修复错误,而不是整个代码。在这种情况下,我倾向于阅读代码,看看是否可以轻松地进行修复,而无需进行重大更改,例如添加5行或更少的代码。在这一点上,所做的改变就像一次外科手术,对达到预期效果的影响最小

  • 拆掉代码,放上更好的东西。在这种情况下,没有一个很好的小方法来进行更改,或者有很多小更改需要打包到一个小项目中,在这个小项目中需要消化所有代码,而这不是一个快速的小更改。这里的一个例子就是使用ASP站点并将其放入最新的.Net框架中


  • 确定某件事是哪种变化需要一点实践和经验,了解别人可能会称之为“如果可以,再做一件事…”这可能是一件大事,但他们并不这么认为,e、 g.我们是否可以添加一个小模块,记录任何错误,并在发生不好的事情时向我发送电子邮件,而在所有其他要求都解决后,这可能不是那么容易的事情,例如,如果代码无法发送邮件消息,该怎么办。

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

    一定要退房。它是一个Eclipse插件,目前用于Java和PHP,它分析您的代码并提供代码探索、可视化和搜索工具。该工具是关于理解代码中的关联:类层次结构、调用、实例化和几乎所有其他内容


    我发现它对于挖掘成堆的代码非常有用(顺便说一句,对我来说,即使是我自己的代码在几个月没有接触它之后也会变得疏远)。

    两者都有。对我来说,当我看到一幅大图,然后进入低水平时,理解代码就更容易了。