如何开始修改大项目

时间:2009-06-29 05:32:02

标签: c++ projects legacy-code


我必须使用超过100k行代码对现有C ++项目进行增强。
我的问题是如何以及从何处开始这些项目?
如果代码没有很好地记录,问题会进一步增加。 是否有用于研究大型项目代码流的自动化工具?

Thanx,

10 个答案:

答案 0 :(得分:16)

在触摸任何内容之前使用Source Control!

答案 1 :(得分:13)

有一本书给你:Working Effectively with Legacy Code

这不是关于工具,而是关于可以用来更好地理解和更改代码的各种方法,过程和技术。它甚至是从C ++的角度编写的。

答案 2 :(得分:3)

  • 首先研究现有界面。
  • 如果缺席则编写测试,或者扩展已编写的测试。
  • 修改源代码。
  • 运行测试以检查修改是否以某种方式破坏了旧行为。

答案 3 :(得分:3)

目前网上免费提供另一本关于面向对象的再造的好书:http://www.iam.unibe.ch/~scg/OORP/

答案 4 :(得分:3)

Diomidis Spinellis的这本书"Code Reading"包含了很多关于如何获得关于更大,未知项目的概述和深入知识的建议。

第6章主要关注该主题(Tacking Large Projects)。关于工具(第9章)和建筑(第8章)的章节也可能包含很好的提示。

然而,这本书是关于理解(通过阅读)“代码”。它没有直接解决维护步骤。

答案 5 :(得分:3)

我要做的第一件事是尝试找到产品的要求

这种尺寸的产品在没有要求的情况下开发几乎是不可想象的。

通过仔细阅读要求,您将能够:

  • 了解产品(以及代码)至少应该做什么
  • 了解代码实际满足这些要求的程度(或差)

否则你只是在看代码,试图暗定开发人员的意图......

答案 6 :(得分:2)

运行Doxygen并设置EXTRACT_ALL标记,以记录代码库中的所有关系。它不会对代码流有所帮助,但希望它能为整个应用程序的结构和设计提供一些启示。

答案 7 :(得分:2)

如果您能够在PC中运行代码,您可以尝试通常从分析输出构建一个调用图。

还可以交叉引用工具,如cscope,ctags,lxr等。可以提供很多帮助。一个

花一些时间阅读,构建类图,甚至在您需要了解的代码部分添加注释,这些都是熟悉代码库并准备修改/扩展它的步骤。

答案 8 :(得分:2)

您需要做的第一件事是了解代码的工作原理。阅读有关的文档,然后观察程序在调试器下运行。如果您观看主要功能/循环,然后慢慢深入到程序中,您就可以很好地了解操作的方式。确保你写下你的发现,以便其他人在你有更好的职位后开始跟进。

答案 9 :(得分:1)

一位非常优秀的奥地利程序员曾告诉我,为了理解程序,您首先必须了解程序使用的数据结构。