8


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

谢谢,

4

10 回答 10

16

在你接触任何东西之前使用源代码控制!

于 2009-06-29T05:34:23.080 回答
13

有一本书适合你: 有效地使用遗留代码

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

于 2009-06-29T05:38:09.863 回答
3
  • 先好好研究一下现有的接口。
  • 如果缺少测试,请编写测试,或扩展已编写的测试。
  • 修改源代码。
  • 运行测试以检查修改是否以某种方式破坏了旧行为。
于 2009-06-29T05:41:38.703 回答
3

还有一本好书,目前在网上免费提供,关于面向对象的再工程:http ://www.iam.unibe.ch/~scg/OORP/

于 2009-06-29T07:04:29.343 回答
3

Diomidis Spinellis 的“代码阅读”一书包含许多关于如何获得关于更大、未知项目的概览和深入知识的建议。

第 6 章只关注该主题(处理大型项目)。此外,关于工具(第 9 章)和架构(第 8 章)的章节可能会为您提供很好的提示。

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

于 2009-06-29T07:32:54.920 回答
3

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

几乎无法想象这种规模的产品会在没有要求的情况下开发出来。

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

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

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

于 2009-06-29T14:33:01.937 回答
2

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

于 2009-06-29T05:41:36.020 回答
2

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

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

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

于 2009-06-29T06:26:46.887 回答
2

您需要做的第一件事是了解代码的工作原理。阅读那里的文档,然后观察程序在调试器下运行。如果你观察主函数/循环,然后慢慢深入到程序中,你可以很好地了解事情是如何运作的。确保你写下你的发现,以便其他追随你的人有更好的起点。

于 2009-06-29T07:38:33.940 回答
1

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

于 2009-06-29T10:44:12.927 回答