2024年4月28日发(作者:)
Keep It Simple,Stupid!
•
2010年04月03日21:46:36
KISS---保持简单,并且一目了然
•
•
•
•
•
•
瞎扯KISS
好文一篇
What does KISS stand for? (KISS代表什么?)
What does that mean? (KISS是什么意思?)
How will I benefit from KISS (我将从KISS原则中受益多少?)
How can I apply the KISS principle to my work (如何把KISS原则
应用于工作中?)
•
Are there any examples of the KISS principle(有KISS原则成功案
例吗?)
•
•
Does KISS only apply to java coding (KISS只适合于java编码吗?)
总结
瞎扯KISS
What's KISS, How to KISS. 哇,今天题目很劲爆,你想歪了吧.记得有一次我把
K.I.S.S & D.R.Y做为我的QQ签名,有一位同学说这个签名很隐晦,然后给我来了个
深入的剖析,没错,他想歪罗.然后呢,我跑题了.
KISS是计算机编程中的一个很有名的原则.全称是Keep It Simple, Stupid,或者是
Keep It Stupid Simple,还或者是Keep It Simple And Stupid,又或者是Keep It
Short and Simple.反正怎么变也少不了simple.
simple与stupid之间是否存在矛盾呢?简单的就是愚蠢的,愚蠢的就是简单的?那世
界不是会乱套了.simple指的就是 *简单* 的意思,但stupid是不是 愚蠢 的意思呢?
为了更好的理解stupid的意思,我们需要了解下KISS产生的背景.
Kelly Johnson提出了KISS原则,他是一个飞机工程师以及航空发明家,同时也是一
个管理天才,他一生中主要设计了40多架飞机,获得的荣誉相当之多,总之,很牛.这个
原则是对Johnson带领的设计工程师团队最好的例证,他们在设计飞机时,必须考虑
到假如飞机在交战情况下出了故障,如何让普通的机械师修理飞机?这就是这个原则
产生的历史背景.因此,stupid不是愚蠢的意思,而是指出故障的方式与修理故障的熟
练程度之间的关系.
所以,我喜欢把KISS翻译为:
保持简单
,
并且一目了然
很多人会说保持简单不就是代表还要一目了然呢?
其实不然,问你"おはようございます"是什么意思,对于日本人来说,这个太一目了然
了,而其他国家的人看到这个目瞪口呆.它翻译成中文就是"你好",英语就是"hello",西
班牙语是"hola"
.(){.|.&};. 这是一条bash命令,简单吧,命令中都没有一个字母,也就11个字符,不说
谁看得懂这是啥东东.它就是fork炸弹,炸弹啊,很危险的,千万不要尝试.否则干脆点,
重启电脑吧.
所以,简单不一定代表一目了然.在计算机编程中,就存在很多这种情况,有些coder总
是喜欢炫耀自己的聪明才智,喜欢写耍小聪明的代码,也就是代码行数越少越好,最好
一个函数一行代码,听起来很简单吧,可是一目了然吗?编写这种程序的家伙过段时间
回去看代码会哭笑不得.
与KISS有异曲同工之妙的原则有:
•
"everything should be made as simple as possible, but no simpler"---爱因
斯坦
•
•
"Simplicity is the ultimate sophistication"---达芬奇
"It seems that perfection is reached not when there is nothing left to add,
but when there is nothing left to take away"---安东尼.德.圣-埃克苏佩里
好文一篇
在网站发现一篇关于KISS的好文,觉得写得很好,所以把它翻译成中文. 链接:Filip
Hanik
KISS是Keep It Stupid Simple或者Keep It Simple, Stupid的缩写.
这个原则给我多年的软件工程生涯带来重要的,巨大的成功.软件工程师和开发人员
的一个通病是他们倾向于高估复杂的问题.
通常当开发人员遇到问题时,他们会把问题分解成更好理解的更小的子问题,但是我
敢说开发人员中的十有八九还是会犯错误,他们不能把问题分解成足够小,且易于理
解的小问题.这将导致很简单的问题却有较复杂的方案,另外一个副作用是代码的膨
胀,就像BASIC语言中到处充满了goto语句,Java语言中一个class有500-1000多
行代码,每个class中的method包含好几百行代码.
这些代码块大都是对原始方案的例外情况的处理.如果开发人员把问题分解为更小,
这些例外情况将会得到更好的处理.
•
•
•
•
•
•
•
你将会能够解决更多问题,并且速度更快
你将使用较少的代码解决复杂的问题
你将会写出高质量的代码
你将能够构建易于维护的更大的系统
当新的需要到达的时候,你的代码将会更加灵活,更易于扩展,修改以及重构
你将会完成比你想象中更多的事情
由于所有的代码简单,你将能够在大的开发团队胜任大的项目
有许多步骤可以遵循,有些相当简单,有一些具有挑战性.就像听起来那么容易一样,保
持简单是耐心的问题,是否能使用该原则大部分取决于你自己.
•
谦虚.别把自己想成是超级天才,这是最可能犯的第一个错误.保持谦虚,你最
终会达到超级天才的状态,即使你没有做到,谁在乎呢.假如你的代码笨拙,简单,那
么与它一起工作,你没必要是天才.
•
分解大任务为一系列的子任务,这些子任务最多不需要你花4-12个小时来编
码.
•
•
分解大问题为许多小问题.每个问题都能够用一个或很少几个class解决.
保持class中的method尽可能小,每个method不应该超过30-40行代码.
每个method仅仅解决一个小小的问题,而不是很多的用例. 如果在method中有
大量的条件语句,考虑把他们分解为多个更小的method. 这样做不仅代码易读性
强,可维护性好,而且能够更快的查找bugs. 你将会喜欢在你的编辑器里使用右键
进行重构.
•
•
保持class尽可能小,同样的方法适合于我们这里描述的class中的method.
先解决问题再编码,而不是其他的方式. 许多开发人员喜欢在编码的时候解
决问题,这并没有任何错.事实上,你可以这样做并且仍然坚持上面的原则. 如果你
在思想上有能力把事情分解成更小,无任如何,在编码的时候这样做吧,但是不要
害怕反反复复重构代码.其最终结果是,代码的行数不是衡量质量的标准,当然除
非你衡量标准为少代表好.
•
不要害怕扔掉代码.重构和重新编码是两个非常重要的领域.当你遇到已经不
存在的需求,或者你没有意识到你能找到比开始编写的代码更好地解决旧问题和
新问题的方案,如果你遵循上面的建议,需要重构的代码已经最小化了.如果你没
有遵循上面的建议,你可能需要重新编码.
•
并且对于所有其他的情况,尝试尽可能保持简单,这是最难的行为模式.可是
一旦你形成了KISS行为模式,当你回想时,你可能会说我不可想象我以前是如何
工作的.
存在很多使用KISS原则的成功案例,我将寻找一个真正很棒的案例张贴出来.同时,
我乐意跟大家分享下面的一些想法:
世界上一些最伟大的算法中总是只有那么几行代码.并且当我们走查这些代码时,我
们能够轻松理解它.这些算法的发明者对问题进行反复分解直到容易理解,从而使得
他/她可以执行它.许多问题的解决者并不是伟大的编码人员,但是他们编写出伟大的
代码.
绝对不是这样的,它适合所有其他编程语言,并且延伸到生活中的一些其他领域,KISS
原则不适合于以下领域:情绪,爱情和最重要的婚姻:-)
总结
KISS原则目的:简单
KISS实现方式:逐步分解,直到不能再细分
所以KISS原则中的简单是:
'不需要译码'的简单
不能再简单的简单
一目了然的简单
大众化的简单
正如高中数学证明题中经常使用的显然成立,KISS原则指导我们把复杂的事情经过
分解后变得显然简单 .
发布者:admin,转转请注明出处:http://www.yc00.com/news/1714289725a2418104.html
评论列表(0条)