面对复杂如操作系统的一个工程,我们应该如何学习,学习什么,从哪里入手?下面是一篇学习指引:
关于Chromium code base,有许多需要学习的,宏观层次比如:进程及其相互之间的关系,IPC如何工作,URL加载流程;微观层次比如:智能指针,消息循环,线程用法,线程模型,string等的使用指引。
学习Chromium的“行为处事”:
编码风格:http://www.chromium.org/developers/coding-style;如果你有其它编码经验,你可能会觉得chrome编码风格过于严格甚至是挑剔。例如:禁止在行尾添加多余的空格。所有的注释都应该是合法的英语句子包括标点符号。行的长度限制在80列。
个人学习计划:
最终,你配好了编译环境,编译成功,准备开始写代码了。如果我们有时间阅读完所有的代码并理解之后才开始写第一行代码,那就完美了。当然,那是不可能的,boss没时间等你阅读完并理解所有的代码,大概我们自己也没有耐心阅读完所有的代码。我们应该怎么做呢?我们建议你根据自己的实际需要制定学习计划,下面推荐一些切入点:
Chromium已经有一些高质量的设计文档http://www.chromium.org/developers/design-documents。有的可能比较陈旧了,但无碍于帮助理解代码的整体组织方式。
- 阅读最重要的几个开发文档
- http://www.chromium.org/developers/design-documents/multi-process-architecture
- http://www.chromium.org/developers/design-documents/displaying-a-web-page-in-chrome
- http://www.chromium.org/developers/design-documents/inter-process-communication
- http://www.chromium.org/developers/design-documents/threading
- http://www.chromium.org/developers/how-tos/getting-around-the-chrome-source-code
- 看项目组是否有相关的指引文档 -- 同事可能已经写了相关的文档,你可以进行参考以避免走弯路
- 学习相关代码约定
- 如果时间允许,浏览一遍所有的设计文档,阅读相关的部分
- 擅用代码搜索(或者你自己的代码浏览工具)
- 学习怎么样找到了解相关代码的人员
- 对你要学习的代码进行调试,使用调试工具,打印log等
- 注意区分哪些是需要理解的,哪些是目前所理解的。例如,如果你的团队正在做很多GUI编程,那么也许你应该花点时间学习GTK+,Win32, 或者Cocoa编程。
Blink:
有时,你需要深入到blink(以前的webkit),以fix一个bug或者添加一个新功能。
这里有一篇关于“Webkit工作原理”的文档https://docs.google.com/presentation/pub?id=1ZRIQbUKw9Tf077odCh66OrrwRIVNLvI_nhLm2Gi__F0。尽管Blink已经不同步Webkit了,但其中很多东西还是没有变。
这篇文档解释了webkit开发的基本流程: http://dev.chromium.org/developers/webkit-development-workflow;
原文:http://www.chromium.org/developers/learning-your-way-around-the-code