Open source 如何阅读源代码学习如何使用大型系统?
假设您想开始为一个拥有数千名LOC的开源项目做出贡献。我对如何开始学习/破解新系统的方法/建议很感兴趣 浏览代码,寻找你认为自己知道发生了什么的地方。通读这些章节,看看你最初的想法是否成立,然后尝试修改它,看看你是否可以改变它来做其他事情 我建议您在项目路线图的指导下,继续寻找新功能和错误修复的位置,以便以有意义的方式做出贡献Open source 如何阅读源代码学习如何使用大型系统?,open-source,Open Source,假设您想开始为一个拥有数千名LOC的开源项目做出贡献。我对如何开始学习/破解新系统的方法/建议很感兴趣 浏览代码,寻找你认为自己知道发生了什么的地方。通读这些章节,看看你最初的想法是否成立,然后尝试修改它,看看你是否可以改变它来做其他事情 我建议您在项目路线图的指导下,继续寻找新功能和错误修复的位置,以便以有意义的方式做出贡献 此外,请阅读文档和任何可能存在的加速文档(功能规范、需求规范等)。这可以进一步帮助您更快地学习代码:)找到一个让您感到舒适的小地方,然后进行更改。忽略其余的;当你需要的时
此外,请阅读文档和任何可能存在的加速文档(功能规范、需求规范等)。这可以进一步帮助您更快地学习代码:)找到一个让您感到舒适的小地方,然后进行更改。忽略其余的;当你需要的时候,你会了解它的。不要被尺寸所压倒;每一个程序都是从第一行开始的,如果不是以小的、独立的位进行组织,就不可能维护。所以你总是有一个合适的位置。如果你想要我发现对学习如何从代码中学习有用的书,我会看看Diomidis Spinellis的书
对于您的具体问题,我将从代码阅读开始。但两者都是好书。有目的地学习。我认为如果你有一个目标——修复这个或添加那个功能,你会学到最好的东西。开始寻找可能需要进行更改的地方。向后跟踪控制线程以了解如何到达代码中的该点。另外,从“鸟瞰”的角度来看代码——看看布局和结构。好的代码将有描述性的名称,告诉您每个类和方法的用途。看看您是否能够识别实现模式,并看看它们在何处/如何使用。不要在文档中放太多的存货——文档可能很优秀,但它们通常与代码的实际功能不同步。让代码本身成为最好的文档。如果您熟悉该项目,并且对您想要贡献的内容有一些想法,那么请获取最新版本的代码并进行您想要的更改。不要试图一次消化全部代码。查找正在使用的模式和约定,并尽可能地遵守它们。我更喜欢在IDE调试器中逐行“逐步”检查代码。尝试访问大型系统中的所有代码是不实际的,但我从调试应用程序的启动开始,然后转到应用程序感兴趣/重要的其他代码领域。我将针对源代码运行,因此我有一个可浏览、可读的类级源代码视图。它非常适合帮助您浏览庞大的代码库我建议您找到一个您真正想要添加的功能 我只真正浏览过一次其他人的大量代码,这变得容易多了,因为我想添加的功能是我真正需要的。我认为这是大多数开源项目开始的原因;满足需要 抢劫
-谢谢你的回答。很多有用的信息 我认为有些工具是:
- 格雷普
- ctags
- cscope
- javadoc(Java)
- 强氧(C,C++)
- lxr(用于索引和显示源代码存储库的软件工具集)
- 不要在小细节上花费太多时间
- 不要试图在一开始就理解整个系统
- 重点是试图理解一个相对“独立”的模块或组件,该模块或组件在过去作为一个实体(特征)添加。这通常在你的脑力所能应付的范围内,因为它是由其他人在同一时间作为一个模块完成的
- 在将更多的组件或“片段”消化和组装在一起后,您对整个系统的理解将得到提高
- 工具非常有用:Doxygen+GraphViz,或者是一个软件,比如“理解”,VisualStudio中的调用和调用图,“查找所有”和“查找所有引用”,等等
- 尝试对类图进行反向工程。假设有一个从a到B的功能。在a处设置断点,调试,逐步完成并观察通信,在论文中绘制链接和继承。您也可以使用序列图。这对我理解系统的特定功能起到了作用。是:第1步:将代码导入到一个像样的IDE中太琐碎了?Ian你能在回答这个问题时发表这一点吗?我想投你一票