Project management 理解未注释和复杂项目的最佳或最快速的方法

Project management 理解未注释和复杂项目的最佳或最快速的方法,project-management,project,projects-and-solutions,solution,Project Management,Project,Projects And Solutions,Solution,我有一个没有评论的复杂项目。该项目是用Java编程的,但有多个主类,使用多个.txt文件(如模板)和多个.bat文件。我不知道从哪里开始以及如何开始发现项目,因为我需要在该项目中进行一些更改。一个开始是使用一个自动化的uml建模工具(如果您使用eclipse,您可以使用plug-gin),并开始创建各种类的uml图,以查看它们在高层中的关系,并可视化代码。这有助于多次如果正在生成日志文件,请查看它以从起点(主类)了解流程。否则,请放置调试语句以了解流程 查找主类。起点。 开始绘制类和它们所拥有的

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

一个开始是使用一个自动化的uml建模工具(如果您使用eclipse,您可以使用plug-gin),并开始创建各种类的uml图,以查看它们在高层中的关系,并可视化代码。这有助于多次

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

查找主类。起点。 开始绘制类和它们所拥有的对象以及它们引用的外部实体的图片。 跟随所有的分支直到你能找到一个合乎逻辑的结尾

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


而且,当您逐步完成每一部分时,您可以添加自己的注释。

我会尝试在代码中找到最接近您怀疑需要开始进行更改的第一个入口点,设置一个断点,然后开始调试查看局部变量的内容,在熟悉发生的事情后,进一步深入学习。然后,当您对将要使用的代码区域有了基本的了解后,开始处理一些小的更改。测试你对它的理解尝试绘制您所看到的情况。如果你能自信地做到这一点,你将能够决定是否需要回去继续学习更多关于代码的知识,或者你是否知道足够的知识来完成你需要完成的事情

Auch。恐怕没有快速的办法。注释掉一行(或两行)->测试->查看中断的内容。您还可以在这里和那里放置break语句并运行调试器。这应该会给你一些指示,你是如何做到这一点的(即,类之间的层次结构是什么)

希望最初的开发人员使用了一些您可以识别和记录的模式。把每件事都记下来。从尝试理解高层结构开始,然后从那里开始工作

准备好花无休止的时间不理解事情在做什么


与客户交谈,试着了解项目的目的,以及它所做的一切。某个地方的人必须对那里的东西提出一些要求,哪怕只是在电子邮件中。

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


我想说的是,最好的方法就是一行一行地浏览程序。试着抓住代码中的大局,在纸上和代码中的注释中写很多注释。

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

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

  • 识别代码满足的尽可能多的需求。这可能会给你一些原因,当你深入观察时,为什么某些事情是这样的。找到这些测试的一种常见方法是查找任何可用的测试。自动化的是最好的,但通常它们和注释一样缺失

  • 找到代码的入口点。这些将为您提供一些地方,您可以在其中插入代码,以查看不同的输入如何影响流。常见的入口点是代码加载“主”类型函数、服务接口、网页回发等

  • 绘制代码图。寻找可以构建代码黑/白框图片的工具。对我来说,这是无价的。我有时会打印出大的清单,然后用记号笔和尺子攻击。您的目标是创建自己的代码流流程图(心理或其他方面)

  • 使用上述方法(迭代地)为您认为应该发生的代码构建一组输出,并将您可能已经知道的输出(如日志、数据文件、数据库写入等)添加到这些输出中

  • 最后,如果您有时间,创建一些手动测试,尽管最好使用自动测试工具来验证上述内容。在这里,我开始使用调试器来查看代码中的细节

  • 这种方法通常让我有信心做出改变


    请注意,这是一个迭代过程,可以使用部分代码或整个代码来完成。我通常倾向于采用自上而下的方法开始,然后当我获得一些洞察力时,我会向下钻,直到细节变得压倒性,然后我会重复。然而,这仅仅是因为我的思维是这样运作的——你可能是不同的。祝你好运。

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

    我完全同意所发布的大多数答案

    我可以添加一个开发工具,使用它对代码进行反向工程,并创建一个类图,从而全面了解所涉及的内容

    那你需要耐心。但当你成功的时候,你将是一个更强大、更聪明的开发者


    祝你好运

    我通常从doxygen开始,打开每个提取选项(尤其是EXTRACT_ALL和EXTRACT_PRIVATE),并启用源浏览器、HAVE_DOT、CALL_GRAPH和CALLER_GRAPH选项(您还需要安装DOT)。这样可以很好地查看软件。对于每个函数,调用都显示并链接在一个图形中,源也从那里链接

    虽然doxGEN是用于C和C++的,但它也是