如何阅读源代码
来源:互联网 发布:旺材 知乎 编辑:程序博客网 时间:2024/05/30 23:45
个人认为, 一个编程初学者在初期应该经过大量的编程训练, 阅读大量经典的编程、技术书籍, 来掌握基本的软件开发技能, 能够使用各种框架、库、组件等以及常用编程工具开发出实用的功能, 并熟悉基本的开发流程。 这大约应该需要2-3年时间完成。 之后, 就应该通过大量的阅读, 思考、 揣摩来增强见识, 汲取更优秀的做法, 提升实践的高度。 每天 8 个小时编程的时间, 真的很足够了。 按说, 如果编程真的用心而且努力去创新的话, 6 个小时都足够。 再多的时间, 其实不过是磨磨蹭蹭的低效率而已。
一个真正优秀的程序员, 是不需要加班的,除非自愿; 因为他将以 6-8 小时的时间, 产出 12-16 小时的价值; 其它的时间, 用来产出其它方面的价值,或者从侧面(比如增强身体素质, 大脑思考活跃度)来提高产能效率(产出价值/时间)。 同样, 别人走在你前面, 并不是别人比你聪明, 比你富裕, 而是别人掌握了某种方法, 这种方法能够像滚雪球一样拉开彼此之间的差距。
开发方法: 阅读 API 文档, 学会如何使用; 阅读源代码, 理解内部实现原理;
与同行交流探讨, 向高手请教; 勤于思考、总结和提炼。
1. 先整体后局部优秀的开源项目通常会有清晰而有层次化的项目组织结构。拿到项目源代码, 第一件事:概览项目组织结构, 弄清楚哪些主要模块(包), 各个模块(包) 下面的主要作用;各个模块(包) 下面哪些主要类, 其作用如何。2. 有目标性的阅读在开始阅读源代码之前, 心里要定一个目标去驱动阅读。 要定位软件运行时的BUG , 还是要弄清楚感兴趣的某个点的内部实现原理? 抑或者做一些修改? 先攻取一个小分支。 就像一个人说的, 物理学家一上来也不是能一下子弄懂整个宇宙的。3. 直攻核心与常用任何设计都会隐式或显式地有“关键角色” 与 “支撑角色” 的分工, 也会划分出 “常用” 与 “不常用”的界限。 对于理解原理来说, 应该直接去学习和探索 “关键角色” 部分; 对于使用来说, 应该直接去学习和探索“常用”部分。4. 边阅读边注释这个做法也挺好, 毕竟人确实容易看后面忘前面。 对读过的地方做些必要的注释, 主要突出其用途,必要的实现细节;5. 搭建环境, 运行, 调试搭建好源码环境, 运行起来, 然后设置断点调试, 观察结果, 很好的跟踪方式;6. 从简单着手, 善于分解小任务对 Spring , Tomcat 的源代码无从下手? 从 JDK, Junit 看起; 看不懂 Extjs Grid 的代码? 从 Label, ComboBox 着手; 一个庞大的类看的吃力? 不妨将其分解成多个小任务, 各个击破。就像任何一门技艺一样, 阅读源代码的技能也要从基础一点一点的训练, 直到娴熟、炉火纯青的境界。7. 认清本源, 主动思考, 大胆猜测和仔细验证遇到复杂框架或组件时, 首先认清楚其本源。 比如, 无论多么复杂华丽的前端框架, 最终都将转化为 HTML/Javascript/CSS, 只是该框架做了一层适配和转化; 无论多么复杂的Web服务器,无非是并发接收请求,处理请求和返回响应, 只是占用资源、性能、吞吐量、适应范围、可扩展性、易用性、易学性等诸方面有所考虑和权衡;根据自己的开发经验和才智, 主动思考和大胆猜测: 如果是自己, 将会如何实现? 可能是通过何种方式来实现?8. 难以看懂的地方是挑战和提升的机会总会遇到看不懂,想不通的地方; 这时, 可能需要弥补下基础知识, 也可能学习到某种高级技巧, 一定不要放过这种学习机会。9. 找点其它的事情做做阅读源代码可不是这世界最美妙的事情。 如果起初不是很适应的话, 可以先读若干函数, 然后做点其它事, 比如活动活动, 听听歌看看视频, 然后再回来阅读, 反复如此, 来逐渐增强这种耐心和适应感。10. 耐心, 毅力, 攻城之战这是必过的槛, 必须攻克的城池。 有些艰难, 需要很大的耐心和毅力, 但是, 一旦攻下, 就为后面的前进打下很好的铺垫了。原文链接:http://www.csdn123.com/html/blogs/20130606/20157.htm
- [转贴]如何阅读源代码
- 如何阅读项目源代码
- 如何阅读开源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码(转)
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码(转)
- 如何阅读源代码(转)
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读源代码
- 如何阅读PostgreSQL源代码?
- asp.net常用代码(4)
- java与C++ DES 算法
- Asterisk 未来之路3.0_0007
- asp.net常用代码(5)
- 行为型模式----命令模式
- 如何阅读源代码
- ebs系统架构简介1——三层结构上篇
- 关于进程线程的自己的想法
- asp.net常用代码(6)
- oracle中创建表主键id依据sequence自增长
- Ant系列五: 日期时间戳dstamp、tsdamp、today的应用
- poj 1985 Cow Marathon
- 利用 GDB Debug Android SurfaceFlinger
- Repeater分页