SUMMARY
这份文档的目标读者
基本条件
你需要明确的一些事情
学习软件开发的几条主要途径
为什么借助开源学习是最有效的
在学习一门语言之前
选择一门语言
必须初步掌握的基本功
MOOC 课程
关于开发工具
关于开发工具的分类(by 李路)
各种参考资料
下载源代码的N种办法
关于源代码管理与版本控制
寻找早期开源项目的源代码
SVN、Git、Mercurial快速介绍
基于包管理的方式获取源代码
让代码运行起来
Ruby版
PHP版
Java版
Python版
JavaScript版
C/C++版
如何克服可能遇到的困难
到哪里去寻找开源项目
什么样的开源项目适合初学者
值得推荐给大家的开源项目
各语言的Awesome List
重点讲解:按语言,按难度选择示例讲解
寻找文档,熟悉功能,先玩一遍,记下功能。
静态理解:
目录结构
包名与文件名
类名、函数名与变量名
注释与Readme
UML图
外部文档
动态理解
输出日志
设置断点与单步跟踪
抛出异常
修改代码,破坏性尝试
主线与支线
寻找入口
跟踪关键流程
寻找挂接点
外围代码
必须存在的外围功能
demo/example
单元测试
知其所以然
改一个游戏来练手
二分查找捉虫记
为开源项目做贡献
提bug与建议
帮助完善文档
提交代码(功能代码与测试代码)
周边代码(demo/扩展/子项目)
外部宣传
其他各种杂务
交流圈
组织结构
开源项目的组织方式
基本礼仪
自己发起一个开源项目
延伸阅读
开源问答
Last updated