我是一名刚毕业的大学毕业生。在我的提升阶段,我需要学习很多产品代码。有一些设计文档,但它们没有多大帮助。
您能否提供一些通用技术来浏览和理解庞大的产品代码(特别是C ++)?
答案 0 :(得分:11)
通过doxygen运行它。这将生成html文档,即使代码没有正确的doxygen风格的注释也会有所帮助。
另一个好建议是查看单元测试,如果有的话。如果没有单元测试,理解代码的一个好方法是编写自己的单元测试。这样做的努力将为自己多次付出代价。
答案 1 :(得分:9)
使用您可以使用的每种方法(无特别优先):
最重要的是:顽强而持久。如果你没有投入工作,不要指望理解它。如果你不理解某些东西,那就去挖掘和挖掘,直到你做到。软件不是魔术,只是努力工作:)
答案 2 :(得分:6)
有些人会告诉你从数据结构开始,但在大型系统中,即使在很多时候也没有那么大的帮助。我可以想到四个要点:
慢慢来。通常,它更像是一系列格式塔移位,而不是单一,线性,渐进的理解。请耐心等待。
无论它有多大,您都应该能够设置断点并在调试器中使用它。即使在庞大,复杂的多线程系统中,您也应该能够了解正在发生的事情。
询问错误,并开始修复它们,无论它们看起来多么疯狂。这类似于把自己放到外国;你最终会接受这种语言。
寻找导师。丛林指南非常宝贵。
答案 3 :(得分:1)
我认为已经有一些好的回应。我的2c值得...
不确定你认为什么是巨大的(10 KLOC,1000 KLOC,10000 KLOC等),但人们希望这在某种程度上被打破并且不是单一的单一程序。也许您的管理层会对您目前最有可能花费时间的“模块”提供一些指导。希望这有助于打破问题范围。
首先,在您尝试理解代码之前,尝试了解产品。它有什么作用?那怎么做呢?它与之互动的是什么?然后它是如何互动的?等...
在获取代码时,首先尝试理解高级设计和哲学,然后在深度之前进行广度研究。我同意上面的一些修复一些错误,但我强烈建议你继续处理高级别,即使你需要了解细节来修复一些错误。
如果你找不到任何已经存在的图表,我也同意以上为自己生成一些图表。然后分享它们,也许是团队/产品维基?我很好奇为什么现有的doco没有多大帮助。通常这是因为这种类型的doco是从早期概念生成的,并且产品不再具有任何相似性,但如果不是这种情况,那么您可以为此问题做出什么贡献。一个假设你今天在哪里,其他人将足够短暂的顺序,你在理想的位置,知道什么是必不可少的doco!
如果产品实际上是“巨大的”,那么你必须承认你永远无法将所有产品都放在脑中,所以你能做的最好的事情是熟悉,知道从哪里开始寻找(来吧)回到理解产品,并首先接近代码广度。
答案 4 :(得分:0)
这显然是一个非常常见的问题,它与此类似(以及与 it 相关的问题):How to understand the design and code flow of any product quickly?
为初学者挖掘一些答案/评论。否则,我们最终会重复它们。 :)