【发布时间】:2010-09-17 22:08:15
【问题描述】:
加入拥有庞大代码库的现有团队可能会令人生畏。最好的方法是什么;
- 广泛;尝试从代码中大致了解所有内容如何链接在一起
- 窄;一次只关注一小段代码,了解它们如何充分发挥作用
- 选择要开发和学习的功能
- 如果可用(并且是最新的),请尝试从类图和 uml 中获得洞察力
- 完全不同的东西?
我正在开发目前大约 20k 行的 C++ 应用程序和库(编辑:在宏伟的计划中很小!)。在行业中,我想您会得到一位经验丰富的程序员的介绍。但是,如果不是这种情况,您可以做些什么来尽快开始增加价值?
--
答案总结:
- 在调试模式下单步调试代码,看看它是如何工作的
- 与比您更熟悉代码库的人配对,轮流担任编码人员和观看/讨论的人员。在团队成员中轮换合作伙伴,以便知识传播。
- 编写单元测试。从你认为代码如何工作的断言开始。如果结果如您所料,您可能已经理解了代码。如果没有,你有一个难题要解决和/或进行调查。 (谢谢Donal,这是一个很好的答案)
- 以与上述类似的方式检查功能代码的现有单元测试
- 阅读 UML、Doxygen 生成的类图和其他文档,以全面了解代码。
- 进行小的修改或错误修复,然后逐步建立
- 记笔记,不要跳进去开始开发;花时间理解比生成混乱或不适当的代码更有价值。
这篇文章是the-best-way-to-familiarize-yourself-with-an-inherited-codebase的部分重复
【问题讨论】:
-
20K 行并不是一个很大的代码库。当它只有 20K 行时,我会阅读它。我在大学里没有学到的一件事是使用大型代码库。
-
确实如此。 20k似乎不多。我们有 C++ 文件,每个文件超过 10k 行。我知道,这很糟糕,但我们现在没有时间清理。 (想象一下,我只是想着就翻白眼)不过,大部分臃肿都是来自 cmets。
-
嘿,确实!我并不是要暗示 20k 是一个巨大的代码库(我从未说过它是),我只是在寻找通用的、可扩展的建议。到目前为止很好的答案;很多事情要考虑。
-
20k 是 .. 什么,一个文件? ;-)
-
我咨询过的一个地方有一个 40k 行的文件,其中包含深度嵌套的 if/then 语句,这些语句实现了某种业务规则。太可怕了。
标签: legacy legacy-code codebase