Keep It Simple, Stupid! 所谓KISS原则,一种对“Keep It Simple, Stupid”的解释是:“保持简单,笨蛋!”,还有一种是:“保持简单而且愚蠢”,作为设计指导思想,这两种解释的意思是一样的,那就是,我们应该将简单作为设计的首要目标,最好简单到傻子也能够理解。
这个道理每个工程师都应该明白,但是真的每个工程师都能够做到吗?
这一段时间,我听到有专业人士很自豪地说:“我们的XXXX是一个相当复杂的系统。”能很自豪地这么说,是因为他们潜意识里有这样一个假设——做一个复杂的软件系统是一件很了不起的事情。这个假设正确吗?
所有的软件系统都是解决“问题”的“方法”,你如果能够解决一个复杂的问题,算你能耐,但是如果你只是方法复杂,嘿嘿,那可不见得你有能耐。
为什么你的“方法”这么复杂?
- A) 问题很复杂,但是我们没能力提供简单方案,所以我们的解决方案也很复杂;
- B) 问题很简单,但是我们无能,所以我们的解决方案很复杂。
- C) 我觉得把事情搞复杂是件很了不起的事情。
- D) 别人把系统搞复杂了,我也没有能力把他弄简单。
如果你选A,那你应该加把劲,爱因斯坦说的:“事情就应该简单,但不应该更简单。”软件设计的终极目标就是要保持简单,当然,为了达到简单,得要付出巨大的努力。不要被复杂的问题迷惑了眼睛,问题复杂不等于解决方案也应该复杂。
Everything should be made as simple as possible, but no simpler.
如果你选B,先鄙视一下你,然后请参照选择A。
如果你选C,你也许入错行了。
如果你选D,那你正在承受世界上很多程序员正在承受的痛苦,我得说,你虽然依然应该牢记KISS原则,努力让设计往简单上演变,但是切不可急于求成,构造一个简单的系统不容易,将一个已经很复杂的系统改造成简单的系统更不容易。初步改进,初步走向简单,祝你好运。
GMail、AdSense和Friendfeed的创建者Paul Buchheit在被问到如何构建高扩展性的软件时,就是说:“Keep it Simple!”
Keep it simple. A lot of times people think that hard problems demand complex solutions, but we’ve found that the opposite is often the case, because complex things quickly become unmanageable and incomprehensible. If the system is simple, then it’s generally easier to understand and easier to scale. It’s also important to know where all of the time is going — if something is slow, you should know why. Fortunately, this is easy — just add timers to your code and log everything that takes more than a few milliseconds.
——Paul Buchheit
人们通常觉得困难的问题需要复杂的解决办法,但是事实往往是相反的,因为复杂的东西很快就变得无法管理和理解,而如果系统很简单,那么管理和扩展起来,就易如反掌,坚持KISS原则,才是王道。
相关文章:
分享到: 开心网 豆瓣网 人人网 Google书签 Del.icio.us
2010年1月29日, 星期五 23:25:54
有两种方式构建软件设计:一种是把软件做得很简单以至于明显找不到缺陷;另一种是把它做得很复杂以至于找不到明显的缺陷。
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年1月30日, 星期六 at 14:18:16
Tony Hoare说的,闪耀着智慧的光芒
http://en.wikiquote.org/wiki/C._A._R._Hoare
[回复]
2010年1月31日, 星期日 16:53:01
简洁而不简单.
——Albert Einstein
[回复]
巴别塔上的雇工(Morgan Cheng) 回复:
2010年1月31日, 星期日 at 17:07:12
这是爱因斯坦说的吗?
我只知道
“简约而不简单”——陈道明
[回复]
2b 回复:
2010年1月31日, 星期日 at 17:31:02
冏
[回复]
2010年2月6日, 星期六 00:29:44
“Everything should be made as simple as possible, but no simpler.”
这句话应该翻译成:每件事应该做得尽肯能的简单,除非已是最简单的。
[回复]