读开源项目

读开源项目

读开源项目作为提升自我专业能力的一种途径,自己也算读过一些开源代码,分享一下其中感受,当中观点纯属一家之言。

 

1、为什么要读开源项目?

C++之父Bjarne StroustrupThe C++ Programming Language这本书上说过,学习一门特定语言,如C++JavaPython,无非一学该语言的语法,二学支持该语言的API、第三方支持库。然而作为写程序为生的码农门,学习一门语言只是入门工作。还需要学习编程思想或者说是思维。编程的目标不止是完成功能,也要更易于修改、维护和扩展,最终达到“优雅”的程度。这就需要码农门更多的付出,以及在平时的学习和工作中不断的积累。现在主流的编程思想由主流的语言支持,那就是已经快被说烂的面向对象编程。如果你出去不会几个oo原则,几个设计模式,你都不好意思跟人交谈。当然设计模式不仅仅为面向对象而生,但“设计模式”这个名词在软件行业兴起,还是“四人帮”的“设计模式”一书开始,而该书是应用面向对象的集大成之作。还有很多其他的编程思想比如面向切面编程(AOP)有段时间比较火,在特定方面是有其价值的,我一位师兄还在这方面在EI上发表过几篇文章。还有比如领域驱动编程、测试驱动编程、面向契约的编程,我的理解它们都是出自面向对象,然后着重某一点,有点偏向于软件工程了。

那对于为了混口饭吃的我们这些码农门来说,能够有车有房,在外活得稍微体面一点,就得懂得如何提升自我,当然想跳出这个“苦逼坑”的另算。停下来不要抱怨公司待遇和猪狗不如的生活,想想自己和这“薪水”是不是“门当户对”吧。公平总是相对的,要想着那些进事业单位的“大爷”门,这还算是公平的吧。哦,扯远了,这里不是来做愤青的。

言归正传,如何提升自我,这个有点大了。那就如何提升自身的专业技能,再小一点,如何提升堆彻代码的能力,那也不是一件容易的事情。

首先我们可以看书,这是我们十几年应试教育的强项。这就有人反驳了,我看完了《The JAVA Programming Language》、《JAVA编程思想》,还看了《JAVA多线程编程》、《设计模式》、《JAVA与模式》,甚至还看小说一般浏览了《深入JAVA虚拟机2》,到最后痛苦的我在《JAVA夜未眠》中寻求出路。但一当我打开eclipse要开始写东西时,忽然脑子一篇空白,看过的东东如一个多小时艰苦卓绝的DOTA被破三路后的无助感。我还是不知道怎么写代码?!

这就对了,工程上的东西往往不是从书上看出来的,更准确的说看书是远远不够的。还要实践,需要我们在具体的项目、工作中不停的写代码,不停的制造让“后人”暴怒的垃圾的代码中成长起来。但是看书还是很有必要的,你之前花的时间不会白费,至少你的起点比别人高,后续的成长会比别人快。

那我们来实践。我们开始做工程,昏天暗地,如梦初醒。几个项目下来,也写不少的代码,也骂了不少“前辈”遗留下来的代码。但是看过很多国内公司做出来的产品,有些也许是许多年前的东西了,为了保持“能用则用”的原则,无论框架还是代码都有些脱离这个时代。但还是有不少,从它的框架来看还是可以的,但是一旦到了二次开发,这些代码就不堪入目了。很多时候,我们的实践就单单是为了完成工作了,一个抠门的老板,一个奴役你的项目经理,一个不停变更需求的“SB”客户,还有这么紧巴巴的工资和赶得要命的工期,使你没有心情把它当成“艺术”。当然很大部分跟我们所处的环境是密切相关的,但毕竟我们还是有不忙的时候。

我们码农异或是屁民既然不能改变环境,那就改变自己吧。就如我一个朋友之前的QQ签名“生活就像被强 奸,既然不能反抗,就享受吧”。但这似乎有点被动,我们需要主动,主动改善自己的生活。

第三个途径我觉得就是读开源项目,看人家“高手”是怎么写代码。虽然很多开源项目注释比较少,单元测试基本没有,但代码还是不改高手本色。所谓“饱读唐诗三百首,不会作来也会吟”。看多了好代码,自然而然会去模仿、提高将之应用到我们的实践中去。它是看书与实践的桥梁,一般的技术图书更多的是讲解语言的细枝末节,框架的部署配置使用,或者是探讨抽象的编程原则,为实践做铺垫、打基础。如果说读书为我们的实践打下了基础、提供了“原料”,那么读开源项目为我们展现了他人的图纸和装配工序,以供我们应用于实践,最终完成“任务”。

那么哪些开源项目值得我们去阅读,或者说我们怎么去选择开源项目阅读呢?

 

2、读什么样的开源项目

首先声明,这些都是我的一家之言,仅供参考。我觉得还是得从实践中来,从你平时的工作、学习的需要出发。比如现在用SSHweb项目比较流行,刚好公司要做这么一个项目,那你在空闲的时候,选择一个自己比较感兴趣的、比较想了解其内部运作的框架来阅读。这样也能够反作用到你在实践中,更好的定位解决问题。如果你要开发个功能单一的并发通讯底层通讯模块,那你可以借鉴一下MINA等开源通讯框架的底层通讯源码,可以让你少走很多弯路。再举个例子,公司要开发一套工作流,那你可以选择ACTIVITI或者JBPM作为工作流引擎在上面进行扩展,这就得逼着你去阅读它的源代码更好的完成手头的工作。

 

3、怎么读开源项目

可以从纵向和横向两个方面入手。

所谓纵向也是我们看一个项目经常、也是自然而然的做法,找到项目入口,从系统初始化一步一步看起。这个比较吃力费时间,但能看懂整个系统的全貌。一般适合想彻底了解某个系统采用的方法。

横向就是看自己最需要看的部分,比如你想了解它的并发机制,多线程通讯的写法,那就只要找到相关的代码阅读就行。这里找到相关的代码,并且从找到代码的代码中排除整个系统需要的其他干扰也需要花一段精力。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值