关于代码学习的一些看法
代码的三中类型
- Product:产品代码,一个可用的产品代码。比如一些开源软件,还有当前工作整天面对的代码。
- lib:库代码,对某一种功能封装的模块,一个工具库。
- framework:框架代码,某种业务常用逻辑的封装,就形成改业务逻辑的框架库。比如,游戏客户端来说就是游戏引擎,MFC是window下的一个GUI框架,等等。
三种代码的编写与设计,抽象层次依次递增,对编写者能力的要求也依次递增。
代码发布的内容
无论是作为产品、库、还是框架,代码发布的形式一般都有下面的内容:
- Source Code:源码
- Product/Example/Demo:产品/示例/演示
- Test:对源码的全面单元测试(现在项目的产品代码几乎是没有的,质量无法保证,只能靠功能测试)
- Docs:分析/设计/代码/测试 文档。方便后来者学习。
代码开发流程
开发的正向流程:
分析 -> 设计 -> 编码 -> 测试
每一步的成果:
- 分析:分析文档(需求分析,可行性分析,等)
- 设计:整个架构设计文档
- 编码:程序接口文档 + 源码
- 测试:测试用例等
最终成果:Source Code
如何学习代码:
理解程度:
- ★ 知其然。知道是干什么用的,有什么优缺点。对多数代码的理解都应该在该层次,以后做东西时候,可以权衡使用那个代码,并且作出合理选择,然后再进一步学习。这样,可以了解许多新技术。
- ★★ 可以熟练使用,但不知其所以然。对经常使用的代码,达到这个程度就可以了。
- ★★★ 知其然,并且知其所以然。不但要知道是干什么的,会熟练的使用,还要知道来龙去脉,整个代码的架构设计,都要了如指掌。非常感兴趣,或着非常重要的代码,可以进入深入的分析。加深理解。学习代码的封装技巧和架构。
根据理解程度的不同,方法肯定不同了:
- 对于有详细文档的代码:
- ★ 粗略浏览文档,特别注意介绍部分的阅读。不必计较细节。
- ★★ 详尽的学习文档,和例子源码的学习,了解如何正确的使用。某些部分文档没有描述清楚的,可以参考下源码,切勿深陷源码的泥潭,大体浏览即可。
- ★★★ 在上面的基础上,研究源码。可以正向,根据设计来研究代码,也可通过源码逆向出架构和设计。
- 对于没有文档或者文档简洁的一塌糊涂的代码:
- ★ 运行几个可执行的东西,看看这个玩意到底是个什么。没有可执行文件,那就只能大体浏览下源码了。看看文件里面的注释之类的就可以了。不必深究代码到底是什么。
- ★★ 要熟练使用该代码,必须要读代码了,先模仿已有的各种写法。若有不明白之处,可以问问别人,查查资料,或者跟进实现代码,看个究竟,也不要纠结于具体实现,只要保持自己在应用层就可以了。
- ★★★ 想要知道一切,只能深入研究代码了。
注意:上面的方法还是比较笼统的。需要进一步细化。
保存学习成果:笔记/博客/代码/知识库
学习的过程中,可能要产生些想法,或新知识,或自己写的一些试验代码。最好都保存下。也可以成博客,与其他人分享学习所得。讨论并进步。
2011/07/08 22:01 david++ 上海·松江