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

百姓网在威海海滩。沙滩上的字是:weihai.baixing.com
25 Comments
------赞同
除了Mark Twin的例子,中国书法史上也有相关(不完全相同)的例子。草圣张芝也曾说过:匆匆不暇草书。
喷血,我第一个反应是:危害百姓.com
本人对编程不热衷,但最近经常到百姓网浏览,感觉非常不错,能自动识别并主动链接到使用者所在城市的信息,方便,有效。这是站在顾客角度换位思考的结果。背后是百姓网技术人员的努力和成就感。
这次带新项目的时候一定跟开发经理好好确定清楚架构,并尝试引入类似重构日的机制;
PS:前几天看完reader里头的文章,做了星标。
今天想起来有篇文章一定要回复的,于是摸着路回来了。
顺便加个“尾巴”:呼吁建立一种机制,让回复的回复能SNS化,或者至少能提醒被回复人(之前有看到邮件提醒的插件,但没人用也是白搭;)
你好!我是今天下午在新加坡国大的那个talk里你的的听众之一。后来google到你的blog,就订阅了,觉得你是个相当有意思的人。 :)
58很俗,很烂,但是人气足,这就是市场