了解和修改大型项目

ath*_*ena 17 java legacy

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

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

一位朋友建议我尝试写下类层次结构.是否有更好的(标准?)方式来做到这一点?

Bor*_*vić 10

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

  • +1版本控制.另外,不要使用CVS.只是不要. (4认同)

Jac*_*son 8

Michael Feathers写了一本名为Working Effectively with Legacy Code的好书.有一个较短的文章版本在这里.

他的一点是,您可以做的最好的事情是为现有代码编写单元测试.这有助于您了解入口点的位置以及代码的工作方式.然后它可以让你重构它而不用担心你会打破它.

从文章链接,他的战略总结:

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.
Run Code Online (Sandbox Code Playgroud)


Boz*_*zho 5

Eclipse(以及其他IDE)提供的两件事就是"打败"这个.我在非常大的项目中使用它们:

  • 调用层次结构 - 右键单击​​某个方法并选择"调用层次结构",或使用CTRL + ALT + H.这将为您提供调用所选方法的所有方法,并提供进一步检查树的选项.这个功能真的非常有用的.

  • 类型层次结构 - 请参阅类的继承层次结构.在eclipse中它是F4或CTRL + T.

也:

  • 找到一种方法,使更改在保存时生效,并且您不必重新部署
  • 使用调试器 - 在IDE中以调试模式运行,以便您了解流程的进展情况