理解未注释和复杂项目的最佳或最有效方式

时间:2010-10-28 19:54:10

标签: project-management project projects-and-solutions solution

我有没有评论的复杂项目。该项目在Java中编程,但有多个主类,使用几个.txt文件,如模板,并使用几个.bat文件。我不知道从哪里开始以及如何开始发现项目,因为我需要在该项目中进行一些更改。

11 个答案:

答案 0 :(得分:6)

与其他人一样,我说这是一个缓慢的过程。

然而,在过去多次这样做,这是我的方法论:

  1. 确定代码满足的要求。这可能会给你一些理由,说明为什么某些事情在你看起来更深的时候就是这样。找到这些的常用方法是寻找可用的任何测试。自动化的是最好的,但通常它们与评论一样缺失。

  2. 找到代码的入口点。这些将为您提供可以查看代码以查看不同输入如何影响流的位置。常见的入口点是代码加载“主要”类型功能,服务接口,网页回发等。

  3. 绘制代码图。寻找可以构建代码的黑/白盒图片的工具。对我来说这是非常宝贵的。我偶尔打印出大型物品,然后用标记和标尺攻击。您的目标是创建自己的代码流流程图(精神或其他方面)。

  4. 使用上面(迭代)为您认为应该发生的代码构建一组输出,并将这些输出添加到您可能已经知道的输出中,例如日志,数据文件,数据库写入等。< / p>

  5. 最后,如果你有时间,最好在自动化测试工具中创建一些手动测试,以验证上述情况。这就是我开始让调试器参与代码中的细节。

  6. 这种方法通常让我有信心做出改变。

    请注意,这是一个迭代过程,可以根据您认为合适的部分代码或整体进行。我通常倾向于采用自上而下的方法开始,然后当我获得一些洞察力时,我深入研究细节变得势不可挡然后重复。然而,这只是因为我的思维以这种方式运作 - 你可能会有所不同。祝你好运。

答案 1 :(得分:3)

找到主要的主类。出发点。 开始绘制类及其拥有的对象及其引用的外部实体的图片。 跟随所有分支,直到找到逻辑结尾。

我过去使用过UML逆向工程工具,虽然视觉效果很好,但是逐步完成代码对我来说一直是最难和最好的方法。

而且,当您逐步浏览每一篇文章时,您可以添加自己的评论..

答案 2 :(得分:3)

我通常从doxygen开始,打开每个提取选项(特别是EXTRACT_ALL和EXTRACT_PRIVATE),并启用SOURCE_BROWSER,HAVE_DOT,CALL_GRAPH和CALLER_GRAPH选项(您还需要安装点)。这样可以很好地查看软件。对于每个函数,调用都以图形方式显示和链接,源也从那里链接。

虽然doxygen适用于C和C ++,但它也适用于Java源代码(设置OPTIMIZE_OUTPUT_JAVA选项)。

答案 3 :(得分:2)

我会尝试找到最接近您怀疑需要开始进行更改的代码中的第一个入口点,设置断点并开始调试查看本地变量的内容,随着您熟悉正在进行的工作,深入研究。然后,当您对将要使用的代码区域有基本的了解时,开始摆弄一些小的更改。测试你对它的理解。 尝试绘制您看到的内容。如果您能够自信地做到这一点,您将能够决定是否需要返回并继续了解有关代码的更多信息,或者如果您足够了解您需要完成的工作。

答案 4 :(得分:2)

奥赫。我担心没有快速的方法来做到这一点。注释掉一行(或两行) - &gt;测试 - &gt;看看有什么打破。你也可以在这里和那里放置break语句并运行调试器。这应该给你一些指示你如何到达那里(即,类之间的层次结构是什么)。

希望原始开发人员使用一些您可以识别并做笔记的模式。记下一切。首先尝试理解高级结构并从那里开始工作。

准备花费无数个小时不理解事情正在做什么。

与客户交谈并尝试了解项目的用途,以及它所做的所有事情。如果只是在电子邮件中,某个地方的某个人必须对那里的东西提出一些要求。

答案 5 :(得分:0)

一个开始是使用自动uml建模工具(如果你使用eclipse就可以使用插件),并开始创建各种类的UML图,以了解它们如何在高级别相关并可视化代码。这有很多次帮助

答案 6 :(得分:0)

如果正在生成日志文件,请查看它以了解从起点(主类)开始的流程。否则,放置调试语句以了解流程。

答案 7 :(得分:0)

雅,这听起来像是一个非常糟糕的地方。

我想说最好的方法是直接通过程序行。尝试掌握代码中的大图,并在纸上和代码中的注释中写下大量笔记。

答案 8 :(得分:0)

我想说,一个好的方法是使用javadoc或doxygen的类图功能生成文档,然后在运行代码遍历使用doxygen生成的类图并查看谁调用了什么。每次我在这样一个项目上工作时,这对我来说非常有用。

答案 9 :(得分:0)

我完全同意发布的大部分答案。

我可以添加使用开发工具来反向设计代码并创建类图,以全面了解所涉及的内容。

然后你需要耐心。但是当你通过时,你将成为一个更强大,更聪明的开发者......

祝你好运!

答案 10 :(得分:0)

最好的第一件事就是尝试构建和运行代码。这可能听起来有点简单,但是当您接管未记录的代码时,问题是您甚至无法构建并运行它。什么时候没有线索开始。