我必须对具有超过 100k 行代码的现有 C++ 项目进行增强。
我的问题是如何以及从哪里开始这些项目?
如果代码没有很好地记录,问题会进一步增加。是否有任何用于研究大型项目代码流的自动化工具?
谢谢,
我必须对具有超过 100k 行代码的现有 C++ 项目进行增强。
我的问题是如何以及从哪里开始这些项目?
如果代码没有很好地记录,问题会进一步增加。是否有任何用于研究大型项目代码流的自动化工具?
谢谢,
在你接触任何东西之前使用源代码控制!
有一本书适合你: 有效地使用遗留代码
它不是关于工具,而是关于您可以用来更好地理解和更改代码的各种方法、流程和技术。它甚至是从主要是 C++ 的角度编写的。
还有一本好书,目前在网上免费提供,关于面向对象的再工程:http ://www.iam.unibe.ch/~scg/OORP/
Diomidis Spinellis 的“代码阅读”一书包含许多关于如何获得关于更大、未知项目的概览和深入知识的建议。
第 6 章只关注该主题(处理大型项目)。此外,关于工具(第 9 章)和架构(第 8 章)的章节可能会为您提供很好的提示。
然而,这本书是关于理解(通过阅读)“代码”的。它不直接处理维护步骤。
我要做的第一件事就是尝试找到产品的需求。
几乎无法想象这种规模的产品会在没有要求的情况下开发出来。
通过仔细阅读要求,您将能够:
否则你只是在看代码,试图预测开发人员的意图......
运行Doxygen并设置EXTRACT_ALL标记以记录代码库中的所有关系。它不会帮助您处理代码流,但希望它能对整个应用程序的结构和设计有所帮助。
如果您能够在 PC 中运行代码,则可以尝试通常从分析输出构建调用图。
还有交叉引用工具,如 cscope、ctags、lxr 等。可以提供很多帮助。一种
花一些时间阅读、构建类图,甚至为您长时间理解的代码部分添加注释是熟悉代码库并准备修改/扩展它的步骤。
您需要做的第一件事是了解代码的工作原理。阅读那里的文档,然后观察程序在调试器下运行。如果你观察主函数/循环,然后慢慢深入到程序中,你可以很好地了解事情是如何运作的。确保你写下你的发现,以便其他追随你的人有更好的起点。
一位非常优秀的奥地利程序员曾经告诉我,为了理解一个程序,您首先必须理解该程序使用的数据结构。