知之不如好之:为什么要阅读开源代码

从业软件行业三年,发现身边的很多程序员都讨厌阅读代码,哪怕他们都很喜欢写代码。确实写代码就像画一副作品,是一件愉快有趣的事,而阅读他人的代码,则显得非常艰难、无聊。哪怕是阅读自己几个月前写的代码,都有可能是一种折磨。所以,为什么我们要浪费几个小时、几天、几周来读别人的代码,我们可以用这些时间写一些对我们来说very awesome的代码。

对于我个人,就很喜欢阅读他人的优秀代码。或者说一开始只是为了生存,后来出于习惯,最后渐渐喜欢上了这件事。大家发现了没有?把妹其实也是一样,要经常出现在她的视野里、生活中,当她的生活、娱乐、工作中到处都被你占满,或许她就不愿意再过没有你的日子了。

扯远了,扯回来。

最初阅读别人的代码,我只是为了生存,不断学习知识,好让自己快速增值,总之,因为穷。实习的时候,当我听到某某实习生写的代码很好,被同事、导师表扬,我总会不声不响弄来他的作品学习。正式工作后,当同事实现了一种我所未知的牛逼功能,我总会阅读他的代码,向他请教。再后来github逐渐成为我编程学习中不可或缺的角色。那么,阅读这些优秀的代码,给我带来了什么益处?能对大家造成什么影响?

增长见识

当我们越来越多得阅读优秀代码,我们的知识将会不断地、缓慢地增长。是的,缓慢地增长。我们不可能因为读了某段代码,从此封神,但它能助我们成神。每位热爱这一行的程序员都会希望成为杰出的工程师,而成为大师最有效的方法就是:找到大师,跟随大师,模仿大师。我们不可能飘洋过海找到github上Top10的大师缠着他们指导我们如何将代码写得优雅,我们也不可能让那些优秀的同事放下工作,放下生活,放下娱乐教我们编程,所以阅读他们的代码成了我们学习他们的知识的唯一途径。阅读风格迥异的优秀代码使我们获得知识,增长见识。

富有创造力

阅读优秀的代码可以让我们富有创造力。可能有人会奇怪,借鉴别人的代码,应该获得抄袭力才对,怎么会是创造力?我们来看《黑客与画家》中的一段话:

创造优美事物的方式往往不是从头做起,而是在现有成果的基础上做一些小小的调整,或者将已有的观点用比较新的方式组合起来。

这句话在历史中就已经得到了验证。优秀代码中的一些思想,往往会使我们醍醐灌顶,如果我们再进一步思考,就会对我们的编程能力带来极大的提升,使我们更有创造力。我们知道,将颜料中的不同成份进行优美得组合,可以形成一件巨作,同样的,我们将借鉴来的不同的编程思想进行组合,也有可能创作出优秀的作品,也有可能得到你想要的awesome的代码。但首先,米开朗基罗在大教堂顶上创作的时候,不也是必须得精通不同颜料的成份吗?

举个个人的例子,前段时间工作中的一个复杂的业务逻辑,我将策略模式、依赖注入、事件循环机制进行组合,写出了自认为优雅的代码,满足功能又使其富有扩展性,得到了上司的认可。而这几种思想,就是在前同事的代码、shadowsocks源码中学来的。当然,得到同事认可并不意味着我是大牛,但至少,我走在了这条路上。

自信心

这一点我想是毋庸置疑的,当你富有见识,富有创造力的时候,你必将是自信的。当你面对一项艰巨的任务,你在阅读优秀代码过程中获得的知识,必将带给你克服它的信心。同时,自信心也会给你的生活、工作带来极大的优势与便利。

如此多的好处等着你,还犹豫什么呢?赶紧拿起手中的电话。。。不对,我想说的是,“知之者不如好之者”,如果你热爱编程,那就一定要阅读优秀开源代码。“学而不知则惘”,阅读的同时,也必须思考,攫取出其中的思想为己所用。

那么,面对github上如此多玲琅满目的优秀开源作品,我们要如何进行有效得阅读呢?这都要问,难道还要老师一口一口喂吗?

好,老师喂。

下回再喂。