如何阅读源代码

来源:互联网 发布:centos7如何配置网络 编辑:程序博客网 时间:2024/06/05 08:43

    个人认为, 一个编程初学者在初期应该经过大量的编程训练, 阅读大量经典的编程、技术书籍, 来掌握基本的软件开发技能, 能够使用各种框架、库、组件等以及常用编程工具开发出实用的功能, 并熟悉基本的开发流程。 这大约应该需要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
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 买回来小鸽子开家我敢了怎么办 小鸽子出壳后母鸽就不孵了怎么办 狗狗在笼子里一直叫怎么办 养了一年母鸽子不配对怎么办 血管翳云翳斑翳长满眼睛怎么办 鸽子训放50公里突然下雨了怎么办 安卓手机反应慢又卡怎么办 tcl安卓系统电视反应慢怎么办 狼人杀警长竞选一直平票怎么办 去驾校投诉教练被教练报复怎么办 哈尔滨机场大巴六点的飞机怎么办 山东德州恩城镇的农民怎么办养老险 我的世界联机平台房间进不去怎么办 验车时间过了3天怎么办 在携程订的机票和酒店不能退怎么办 千牛工作台中旺旺登录失败怎么办 掌通家园换手机号了忘了更改怎么办 qq注销了后绑定的全民k歌怎么办 小米账号绑定的手机号注销了怎么办 微信账号注销后绑定的手机号怎么办 微信账号不想用了注销不了怎么办 苹果手机掉了捡到不还怎么办 在工作中把和别人结下梁子了怎么办 在阿里巴巴上买的货物没发货怎么办 做了下颌角一边脸反复肿怎么办 玩广东11选5输50万怎么办 玩广东11选5输了十几万怎么办 新办公楼装修好就要搬进去怎么办 oppo手机上的黄页删了怎么办 小米不小心把手机联系人删了怎么办 58同城小区名输不了怎么办 e路发注册直接有积分怎么办 大众速腾的不锈钢圈被碰花了怎么办 公司卡着生育险不给怎么办 济南图书馆借书超过期限了怎么办 淘宝解绑支付宝支付密码不对怎么办 微博支付宝支付密码忘记了怎么办 图虫签约师通过了认证标识怎么办 签证做假工作证明资料被拒怎么办 在广州办个建设厅电工证怎么办 水利考的五大员证到有效期怎么办