加入已经存在大型代码库的现有团队可能会令人生畏.什么是最好的方法;
宽; 尝试从代码中全面了解所有内容如何链接在一起
狭窄; 一次关注一小部分代码,了解它们如何完全工作
选择一项功能,随着您的发展和学习
尝试从类图和uml中获取洞察力(如果有的话)(并且是最新的)
还有别的吗?
我正在研究目前大约20k行的C++应用程序和库(编辑:在宏观方案中很小!).在工业界,我想你会得到一位经验丰富的程序员的介绍.但是,如果不是这种情况,您可以做些什么来尽快开始增值?
-
答案摘要:
在调试模式中逐步执行代码以查看其工作原理
与比你更熟悉代码库的人配对,轮流成为编码人员和观看/讨论的人.在团队成员之间轮换合作伙伴,以便知识得到传播.
写单元测试.首先断言您认为代码的工作方式.如果结果如你所愿,你可能已经理解了代码.如果没有,你有一个难题要解决,或者要进行调查.(谢谢Donal,这是一个很好的答案)
以与上面类似的方式,通过现有的功能代码单元测试
阅读UML,Doxygen生成的类图和其他文档,以获得对代码的广泛感受.
进行小编辑或错误修复,然后逐步建立
记下笔记,不要跳进去开始开发; 花时间理解比生成凌乱或不合适的代码更有价值.
这篇文章是一个部分重复的 - 最好的方式 - 熟悉自己与继承的代码库
如果可能的话,从一些小任务开始,围绕您的问题调试代码.在调试模式中单步执行代码是了解某些工作原理的最简单方法.
另一种选择是为您感兴趣的功能编写测试.设置测试工具是确定系统具有哪些依赖关系及其状态所在位置的好方法.每个测试都以关于您认为系统应该工作的方式的断言开始.如果事实证明是这样的话,那么你已经取得了一些成就,并且你已经有了一些工作示例代码来重现它.如果它不能以这种方式工作,那么你就有一个难题需要解决,并且需要进行一系列的调查.
我通常向尚未提及的人建议的一件事是,在成为开发人员之前,成为现有代码库的合格用户非常重要.当新的开发人员进入我们的大型软件项目时,我建议他们在尝试使用代码之前花时间成为专家用户.
也许这是显而易见的,但我看到很多人试图过快地跳入代码,因为他们渴望开始取得进展.
这完全取决于你是什么样的学习者和什么样的程序员,但是:
广泛的第一 - 您需要了解范围和规模.这可能包括略读文档/ uml,如果它们是好的.如果这是一个长期项目,并且您需要完全理解所有内容,我可能会真正正确地阅读文档.再次,如果他们是好的.
缩小 - 选择可管理的东西并尝试理解它.获得代码的"品味".
选择一个功能 - 如果您有信心,可能会与您刚看到的功能不同,并开始进行一些小改动.
迭代 - 评估事情的进展情况,看看你是否可以从更深入的重复早期步骤中受益.
配对严格轮换.
如果可能的话,在浏览文档/代码库时,尝试使用严格轮换的配对.意思是,你们两个坐在一起一段固定的时间(比如说,一个2小时的会话),然后你切换对,一个人将继续处理该任务,而另一个人与另一个伙伴一起转移到另一个任务.
成对的你将获得一些知识,然后可以在轮换发生时将其提供给团队的其他成员.同样有益的是,当一对新人聚集在一起时,从事该任务的人(在这种情况下,调查代码)可以以更容易理解的方式总结和解释这些概念.随着时间的推移,每个人都应该处于相似的理解水平,并希望避免"哦,只有约翰知道那段代码"综合症.
从我可以告诉你的情况来看,你有一个很好的数字(3对),但是,如果你被分发,或者没有工作到相同的时间表,它是不可能的.
我建议在它上面运行Doxygen以获得最新的类图,然后进行广泛的一段时间.这为您提供了一个快速的大图片,您可以使用,因为您近距离接触代码.