借助开源项目,学习软件开发——目录
开放文档:《借助开源项目,学习软件开发》。
诚邀您的参与!著作权申明
- 本作品选择采用:署名-非商业性使用-相同方式共享 的CC协议。
- 您可以:复制、发行、展览、表演、放映、广播或通过信息网络传播本作品。以及创作演绎作品。
- 惟须遵守下列条件:
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
- 署名方式为:在转载或新作品开头的显著位置,注明原作者的姓名、来源及其采用的知识共享协议,与本作品在Teamhost上的原发地址建立链接
- 非商业性使用 — 您不得将本作品用于商业目的。
- 相同方式共享 — 如果您改变、转换本作品或者以本作品为基础进行创作,您只能采用与本协议相同的许可协议发布基于本作品的演绎作品。
- 署名 — 您必须按照作者或者许可人指定的方式对作品进行署名。
如何参与这个写作项目
直接对本文档的各个章节,做出点评与指正,我们将会修正各个相关的章节。目录
- 开始之前
- 这份文档的目标读者
- 基本条件
- 你需要明确的一些事情
- 开始
- 学习软件开发的几条主要途径
- 为什么借助开源学习是最有效的
- 选择一门语言
- 必须初步掌握的基本功
- 关于开发工具
- 关于开发工具的分类(by 李路)
- 各种参考资料
- 选择一个开源项目
- 到哪里去寻找开源项目
- 什么样的开源项目适合初学者
- 值得推荐给大家的开源项目
- Hello World
- 下载源代码的N种办法
- 关于源代码管理与版本控制
- 寻找早期开源项目的源代码
- SVN、Git、Mercurial快速介绍
- 基于包管理的方式获取源代码
- 让代码运行起来
- Ruby版
- PHP版
- Java版
- Python版
- JavaScript版
- C/C++版
- 如何克服可能遇到的困难
- 下载源代码的N种办法
- 理解开源项目
- 静态理解
- 目录结构
- 包名与文件名
- 类名、函数名与变量名
- 注释与Readme
- UML图
- 外部文档
- 动态理解
- 输出日志
- 设置断点与单步跟踪
- 抛出异常
- 修改代码,破坏性尝试
- 主线与支线
- 寻找入口
- 跟踪关键流程
- 寻找挂接点
- 外围代码
- 必须存在的外围功能
- demo/example
- 单元测试
- 知其所以然
- 静态理解
- 修改开源项目
- 从需求出发,修改代码
- 顺藤摸瓜,寻找可以参考的代码
- 动一个大手术——结构性的调整
- 寻求认可的艰难历程
- 为开源项目做贡献
- 提bug与建议
- 帮助完善文档
- 提交代码(功能代码与测试代码)
- 周边代码(demo/扩展/子项目)
- 外部宣传
- 其他各种杂务
- 成为组织的一员
- 交流圈
- 组织结构
- 开源项目的组织方式*
- 基本礼仪
- 自己发起一个开源项目
- 延伸阅读
- 贡献者
- 开源问答