你如何理解大量的代码?

Inv*_*ble 12 c++

我是一名刚开始工作的新毕业生.在我的提升阶段,我需要学习很多产品代码.有一些设计文档,但它们没有多大帮助.

您能否提供一些通用技术来浏览和理解庞大的产品代码(特别是C++)?

Dim*_*ima 11

通过doxygen运行它.这将生成html文档,即使代码没有正确的doxygen风格的注释也会有所帮助.

另一个好建议是查看单元测试,如果有的话.如果没有单元测试,理解代码的一个好方法是编写自己的单元测试.这样做的努力将为自己多次付出代价.


Chr*_*ich 9

使用您可用的每种方法(无特别优先):

  1. 使用该产品本身并了解什么它做
  2. 与维护它或曾经使用它的开发人员交谈
  3. 通过它进行调试,看看数据如何流动以及类如何交互("当我点击这个按钮时,究竟发生了什么,谁负责?")
  4. 查看体系结构,UML或类图
  5. 我最喜欢的一个:创建自己的类层次结构图,类交互,一般控制流,高级组件,进程/ DLL交互,对象生命周期和管理
  6. 如果它们没有完全过时,请阅读开发/测试/用户规范(与#1相配)
  7. 阅读相关文档

最重要的是:顽强而持久.如果你没有投入工作,不要指望理解它.如果你不理解某些东西,那就去挖掘和挖掘,直到你做到.软件不是魔术,它只是努力工作:)


jrt*_*ton 6

有些人会告诉你从数据结构开始,但在大型系统中,即使在很多时候也没有那么大的帮助.我可以想到四个要点:

  • 慢慢来.通常,它更像是一系列格式塔移位,而不是单一,线性,渐进的理解.请耐心等待.

  • 无论它有多大,你都应该能够设置断点并在调试器中使用它.即使在大型,复杂的多线程系统中,您也应该能够走过去看看发生了什么.

  • 寻求错误,并开始修复它们,无论它们看起来多么疯狂.这类似于把自己放到外国; 你最终将获得这种语言.

  • 寻找导师.丛林指南非常宝贵.

  • +1:修复错误是学习代码库的强大功能.除非这个bug真的很小,否则你必须学习一些代码才能修复它. (2认同)