了解和修改大型项目

2022-09-02 21:09:17

我是一名新手程序员,作为我项目的一部分,我必须修改一个开源工具(用java编写),它有数百个类。我必须修改其中的很大一部分以适应项目的需要。在过去的一个月里,我一直在努力阅读代码,试图找出每个类的功能,并试图从头到尾找出管道。

80%的课程有不完整/缺失的文档。剩下的 20% 是构成该工具的通用 API 的那些。一个月的代码阅读帮助我理解了基本的架构。但是我无法弄清楚我需要为我的项目所做的确切更改。有一次,我开始修改代码的一部分,很快就做了太多的更改,以至于我再也不记得了。

一位朋友建议我试着写下班级层次结构。有没有更好(标准?)的方法可以做到这一点?


答案 1
  • 签入某些源代码存储库中的代码(Subversion,CVS,Git,Mercurial...)
  • 确保可以从源代码生成项目并运行它
  • 如果您已经有一个使用此开源工具的应用程序,请尝试删除二进制依赖项,并在 eclipse 或任何其他 IDE 中引入项目依赖项。运行代码并逐步执行要了解的代码
  • 每次小的更改提交之后
  • 如果你有不同的想法分支代码

答案 2

有一本很棒的书,叫做《有效使用遗留代码》,作者是Michael Feathers。这里有一个较短的文章版本。

他的观点之一是,你能做的最好的事情就是为现有代码编写单元测试。这有助于您了解入口点的位置以及代码应如何工作。然后它可以让你重构它,而不必担心你会破坏它。

从链接的文章中,他的策略摘要:

1. Identify change points
2. Find an inflection point
3. Cover the inflection point
   a. Break external dependencies
   b. Break internal dependencies
   c. Write tests
4. Make changes
5. Refactor the covered code.

推荐