Home » 中文 » 客齐集 » 如果我有时间,我会写更短的代码 « 百姓网在威海 | Blog的头8年 »

如果我有时间,我会写更短的代码

相关帖子
作者:Jian Shuo Wang 发表于: 2010-09-10 00:09

eBay的代码量已经比Windows+Linux更多了。从我看来,这绝不是一种恭维,而是彻彻底底的技术人员的失败。从代码的角度,越短的代码,就越有力量。

Mark Twin曾经在给一个朋友的信中说道:

我亲爱的朋友,如果我有更多的时间, 我就能给你写更短的信了。
文字是这样,代码更是这样。

有了面向对象的方式和一些简单的设计模式加一些重构,代码可以变得非常的简单,明了,易读,却依然保持灵活和强大。在百姓网,我们曾经把2000行代码重构为250行(迷你朝歌),然后又把另外几千行代码重构为250行(迷你荆州)。我觉得250行代码是一个神奇的数量,很多的功能模块,就算用PHP这样并不是完全面向对象的语言,也应该控制在250行之内。我个人的编程习惯和目标是,把每个函数控制在7行代码之内,把函数的数量控制到最小,用最短的代码完成功能。我个人用的简化代码最有效的方式,就是写一段代码,彻底删掉,重写,然后再删掉。在如此十几遍之后所得到的代码,通常比第一次要好得多。

百姓网在过去的一年里面,每周四下午的乐高日,就是定期的重新审视已经写好的代码,并且进行重构的固定时间。取名为乐高,寓意就是,我们希望产生的代码就像乐高的小积木块一样,足够小,足够灵活,却可以以此组合成各种东西。我们的代码,就应该是那些小乐高的积木。

乐高日每次重构竞赛的优胜者,会得到一个乐高积木。我们发的第一块是乐高最经典的红色3001号模块,然后是3002,3003。。。希望我们的代码可以像乐高一样经典。

对于小和短的追求,是为什么百姓网的每个技术人员的第一周一定可以在250行代码之内,一个小时之中,把百姓网的基本功能完成一遍的原因。

为了更好的代码,每天上线前,产品的所有人员(10个人)都会收到所有代码总行数邮件。代码量的增加,对于我们来说不是件好事。我们用拉锯战的方式在功能增加的同时,把代码量牢牢地卡在原地,并且不断减少。我们希望有一天,网站运营的PHP代码会被压缩到5000行之内。

就像对于代码的数量的追求一样,我们追求代码的质量,我们追求最实用的解决方案(我们是彻彻底底的实用主义者,希望用最小的代价解决问题),我们也追求网站的速度,内容的质量。。。技术人员,就应该有些技术人员的样子。毕竟,无论做什么,都要有些追求的。。。

baixing.in.sand.jpg
百姓网在威海海滩。沙滩上的字是:weihai.baixing.com


Posted by Jian Shuo Wang at September 10, 2010 12:05 AM

相关贴子:
评论

技术人员,就应该有些技术人员的样子。毕竟,无论做什么,都要有些追求的。。。
------赞同

Posted by: Raecoo on September 10, 2010 09:27 AM

从繁入简,才是真功夫。
除了Mark Twin的例子,中国书法史上也有相关(不完全相同)的例子。草圣张芝也曾说过:匆匆不暇草书。

Posted by: 善用佳软 on September 10, 2010 10:04 AM

有一个代码洁癖的人浮出水面。根据“偏执狂才能成功”定律,百姓网的成功概率越来越高了。

Posted by: 淬念 on September 10, 2010 11:57 AM

有没有这样的调查,所有成功的网站每个功能的代码量比较?生命周期本来就只有几个月的代码,经过优化后能把生命周期延长到几年么?项目的成功究竟依赖于代码的精简还是其他方面。

Posted by: zeal on September 10, 2010 01:11 PM

看完你的这篇,我想起以前看到的“代码如诗”

Posted by: 下午实验室 on September 10, 2010 01:34 PM

技术人员落伍了啊!!!!!!!!!

Posted by: sexla on September 10, 2010 02:55 PM

weihai.baixing.com
喷血,我第一个反应是:危害百姓.com

Posted by: 李夏驰 on September 10, 2010 03:32 PM

nice idea!!!!

Posted by: dongbinghua on September 10, 2010 05:20 PM

第一段话有待商榷吧。代码量大=技术人员失败,逻辑似乎不够严密。

Posted by: ssword on September 10, 2010 10:39 PM

Hi Jianshuo - 看了百姓网对代码的极致追求,冒昧问一个问题,百姓网现在的PHP代码是否都是自己写的raw PHP? 有用到(甚至大量用到)第三方lib/extension/framework吗? 若有对这部分代码的数量和质量如何来选择、控制?

Posted by: Angus Li on September 10, 2010 11:22 PM

用到一些,但是不多。我们标榜自己为实用主义者,我们选择用还是不用的基本原则是:该用就用,不该用就不用。换句话说,就是没有教条的原则。

Posted by: Jian Shuo Wang on September 11, 2010 11:35 AM

@ssword,第一句话从来没有说“代码量的=技术人员失败”。这是一种断章取义的说法。重读一下试试?我说的是有语境的。

Posted by: Jian Shuo Wang on September 11, 2010 11:37 AM

简单而且有效,就是力量和方向。能把复杂的编程简化,但同时还保留了相同的功效,就非常不简单。

本人对编程不热衷,但最近经常到百姓网浏览,感觉非常不错,能自动识别并主动链接到使用者所在城市的信息,方便,有效。这是站在顾客角度换位思考的结果。背后是百姓网技术人员的努力和成就感。

Posted by: Balon on September 11, 2010 12:31 PM

这配图够雷人的。如果我有时间,我会XXXXXX。但是一般的公司不会给你这么多时间,百姓网能这样做是技术人员的向往啊。

Posted by: Rebill on September 12, 2010 11:19 AM

建议楼主加个rss 好跟踪博客状态

Posted by: blackbat on September 16, 2010 12:14 AM

我记得这段话是《代码之美》里面的一段话吧?完完全全都是引述人家的话啊!

Posted by: Jason on September 16, 2010 05:26 PM

更简洁的代码需要的是时间!如果你加班到深夜写出一堆代码完成了一个功能,通常老板会觉得这个员工很优秀;如果你没有加班,用很少的代码量完成同样的功能,通常老板会觉得,第一这个功能很简单,第二你的工作不努力。

Posted by: Crazy Jerry on September 17, 2010 12:59 PM

前一阵子正好接手了一个项目,就是基础打的很乱的那种。折磨死了。
这次带新项目的时候一定跟开发经理好好确定清楚架构,并尝试引入类似重构日的机制;

PS:前几天看完reader里头的文章,做了星标。
今天想起来有篇文章一定要回复的,于是摸着路回来了。

顺便加个“尾巴”:呼吁建立一种机制,让回复的回复能SNS化,或者至少能提醒被回复人(之前有看到邮件提醒的插件,但没人用也是白搭;)

Posted by: 九翼青鸟 on September 18, 2010 01:16 AM

这个blog的layout绝对是我见过最简洁明了的。

你好!我是今天下午在新加坡国大的那个talk里你的的听众之一。后来google到你的blog,就订阅了,觉得你是个相当有意思的人。 :)

Posted by: 沃克 on September 22, 2010 05:04 AM

如果PHP想大量缩减代码会用到eval这样邪恶的函数。。。

Posted by: Lek on September 25, 2010 07:08 PM

百姓网做了这么久了,感觉吃痴迷技术,技术不错,页面不错,为何没有人气呢?
58很俗,很烂,但是人气足,这就是市场

Posted by: weijun on September 27, 2010 02:39 AM

百姓网加油啊,再不发力就大势已去咯

Posted by: 浠水 on November 16, 2010 01:59 PM

不要太偏执啊。有个著名的劣币驱逐良币的定律,好像适应于很多领域的。

Posted by: 马克 on November 24, 2010 03:37 PM

学习

Posted by: kikop on January 13, 2011 09:15 PM

能不能请教一下,学代码的首要是什么?也就是需要什么基础。

Posted by: 魔泥 on November 24, 2011 02:47 PM

Heaven never helps the man who will not act.

Posted by: TORY BURCH OUTLET on October 26, 2012 10:05 AM

文章写的不错,你还在做百姓网么?

Posted by: Grant on January 26, 2015 06:21 PM
Post a comment
大名: (我信任你会填入自己的名字,而不是你的公司或者产品的名字)

邮件地址: (嘘!我不会告诉别人的)

URL: (optional)

评论:


别着急,可能要等待多达30秒钟注意:不欢迎“沙发”,“收藏”,“受益”,“瞎扯”等等简单的不表达任何思想的留言
记住我的信息?

<-- 请只按一次
Trackbacks
TrackBack URL for this entry: http://home.wangjianshuo.com/cgi-bin/mtcn/mt-tb.cgi/614
以往的帖子
为“二”的精神干杯 | 14 comment(s) | March 16, 2012
寻找象吸烟一样有利于沟通的活动 | 13 comment(s) | March 07, 2012
局部最大化的CEO们 | 9 comment(s) | February 25, 2012
好制度和坏制度 | 3 comment(s) | February 23, 2012
法律和实践 | 2 comment(s) | February 22, 2012
你有把枪抬高一厘米的自由 | 20 comment(s) | February 18, 2012
公司的青春期 | 1 comment(s) | February 17, 2012
做大和做强 | 4 comment(s) | February 11, 2012
最好的跑步地点在楼下 | 2 comment(s) | February 07, 2012
《浪潮之巅》作者吴军老师上海开讲 | 1 comment(s) | November 07, 2011
支持“不靠谱的主意”就是支持创新 | 5 comment(s) | November 05, 2011
FedEx, GE和Google的文化在打架 | 15 comment(s) | July 24, 2011
不害怕优雅和美的中国人 | 14 comment(s) | May 14, 2011
我现在的桌面 | 29 comment(s) | February 17, 2011
开始活跃于微博了 | 2 comment(s) | January 31, 2011
• 阅读 全部文章
© 2002 - 2009 Jian Shuo Wang. All right reserved. Terms and Conditions.
Edit