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

标签: 客齐集 | 发表时间:2010-09-10 00:05 | 作者:(author unknown) Lamengao
出处:http://home.wangjianshuo.com/cn/

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

原文:http://home.wangjianshuo.com/cn/20100910_eieaeccaec.htm
作者:王建硕,Blogger,百姓网CEO | jianshuo @ hotmail.com

相关 [时间 代码] 推荐:

多些时间能少写些代码

- iyuan - 伯乐在线 -博客
  注:本文转载自coolshell.   我在我的微博上说过这样一段话,我想在这里把我的这个观点阐述地更完整一些.   聪明的程序员使用50%-70%的时间用来思考,尝试和权衡各种设计和实现,而用30% – 50%的时间是在忙碌着编码,调试和测试. 而傻/逼的老板,苦逼的程序员会拿出来100%-150%的时间来忙着赶进度,返工,重构,fix 大量的bug… 所以, 越差的团队一般会越忙,而且还忙不完.

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

- Lamengao - 王建硕
eBay的代码量已经比Windows+Linux更多了. 从我看来,这绝不是一种恭维,而是彻彻底底的技术人员的失败. 从代码的角度,越短的代码,就越有力量. Mark Twin曾经在给一个朋友的信中说道:. 我亲爱的朋友,如果我有更多的时间, 我就能给你写更短的信了. 有了面向对象的方式和一些简单的设计模式加一些重构,代码可以变得非常的简单,明了,易读,却依然保持灵活和强大.

关于时间旅行的几个问题——解密《源代码》

- Mill - 微科幻 - 果壳网
一辈子很长,经过无数岔口,面临无数选择题. 那些影响人生至关重要的选择题,如果做错了怎么办——你一定有做错过或者后悔过的时候,对吧. 毕竟人生那么长,总有那么个把蛋疼的瞬间会去想“如果我那时……”. 问题的复杂性在于人们只能质疑现有选择的正确性,却无法保证其他选择项的正确性. 如果能在选择前找到所有正确选择项,造就出一条完全正确的人生之路,那无疑,人类的幸福将再也不是多愁善感诗人们笔下的缥缈之物.

修改一行代码需要6天时间?

- - InfoQ cn
修改一行代码需要6天时间,你信吗. 这篇文章的作者给我们讲了一个真实的故事. 首先我们来看一下有哪些人物:. Philip:President,会长. Lee:Operations Manager,执行经理. David:IT Director,IT总监. Judy:IT Admin,IT管理员. Ed:programmer,程序员.

不要将时间浪费到编写完美代码上

- - 外刊IT评论
一个系统的迭代开发可能持续运行5年至10年甚至是20年. 相比之下,某行代码甚至某个设计的生命周期则要短很多,只有几个月或者几天,甚至当你为了解决一个问题迭代测试不同方案时它们的生命周期只有几分钟. 通过研究代码随时间发生的变化,Michael Feathers发现了代码生命线. 通常,每个系统都有许多一次写成不再修改的代码.

[原创]两行代码解决javascript按指定格式显示日期时间

- We_Get - 博客园-首页原创精华区
/// 待显示的日期时间,例如new Date(). /// 需要显示的格式,例如yyyy-MM-dd hh:mm:ss. 我曾为解决该问题花了不少时间,主要是网络上找到的代码要么非常烦琐,要么不能通用或格式只能固定几个,所以我专门对这个问题进行了研究,最终优化到只有2行代码,非常精简.

暗时间

- myartings - 微软亚洲研究院
刘未鹏,Mindhacks帮主,在这块自留地上笔耕不辍了八年. 他从2003年在《程序员》杂志上发表第一篇技术文章,并开始在CSDN写技术博客. 起初的博客较短,也较琐碎,并夹杂着一些翻译的文章,后来才慢慢开始有了一些自己的心得和看法. 八年来,虽然平均每个月写1篇或者更少,但他从未停止. 写博客这件事情,给他带来的最大体会就是,一件事情如果你能够坚持做8年,那么不管效率和频率多低,最终总能取得一些很可观的收益.

代码重构

- - ITeye博客
随着程序的演化,我们有必要重新思考早先的决策,并重写部分代码. 代码需要演化;它不是静态的事物. 重写、重做和重新架构代码合起来,称为重构.    当你遇到绊脚石  ---  代码不在合适,你注意到有两样东西其实应该合并或是其他任何对你来说是"错误"的东西  -------- . 如果代码具备以下特征,你都应该考虑重构代码:.