如果我有时间,我会写更短的代码
eBay的代码量已经比Windows+Linux更多了。从我看来,这绝不是一种恭维,而是彻彻底底的技术人员的失败。从代码的角度,越短的代码,就越有力量。
Mark Twin曾经在给一个朋友的信中说道:
我亲爱的朋友,如果我有更多的时间, 我就能给你写更短的信了。文字是这样,代码更是这样。
有了面向对象的方式和一些简单的设计模式加一些重构,代码可以变得非常的简单,明了,易读,却依然保持灵活和强大。在百姓网,我们曾经把2000行代码重构为250行(迷你朝歌),然后又把另外几千行代码重构为250行(迷你荆州)。我觉得250行代码是一个神奇的数量,很多的功能模块,就算用PHP这样并不是完全面向对象的语言,也应该控制在250行之内。我个人的编程习惯和目标是,把每个函数控制在7行代码之内,把函数的数量控制到最小,用最短的代码完成功能。我个人用的简化代码最有效的方式,就是写一段代码,彻底删掉,重写,然后再删掉。在如此十几遍之后所得到的代码,通常比第一次要好得多。
百姓网在过去的一年里面,每周四下午的乐高日,就是定期的重新审视已经写好的代码,并且进行重构的固定时间。取名为乐高,寓意就是,我们希望产生的代码就像乐高的小积木块一样,足够小,足够灵活,却可以以此组合成各种东西。我们的代码,就应该是那些小乐高的积木。
乐高日每次重构竞赛的优胜者,会得到一个乐高积木。我们发的第一块是乐高最经典的红色3001号模块,然后是3002,3003。。。希望我们的代码可以像乐高一样经典。
对于小和短的追求,是为什么百姓网的每个技术人员的第一周一定可以在250行代码之内,一个小时之中,把百姓网的基本功能完成一遍的原因。
为了更好的代码,每天上线前,产品的所有人员(10个人)都会收到所有代码总行数邮件。代码量的增加,对于我们来说不是件好事。我们用拉锯战的方式在功能增加的同时,把代码量牢牢地卡在原地,并且不断减少。我们希望有一天,网站运营的PHP代码会被压缩到5000行之内。
就像对于代码的数量的追求一样,我们追求代码的质量,我们追求最实用的解决方案(我们是彻彻底底的实用主义者,希望用最小的代价解决问题),我们也追求网站的速度,内容的质量。。。技术人员,就应该有些技术人员的样子。毕竟,无论做什么,都要有些追求的。。。
百姓网在威海海滩。沙滩上的字是:weihai.baixing.com
原文:http://home.wangjianshuo.com/cn/20100910_eieaeccaec.htm
作者:王建硕,Blogger,百姓网CEO | jianshuo @ hotmail.com