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有异曲同工之妙的原则有:
在网站发现一篇关于KISS的好文,觉得写得很好,所以把它翻译成中文. 链接:Filip Hanik
KISS是Keep It Stupid Simple或者Keep It Simple, Stupid的缩写.
这个原则给我多年的软件工程生涯带来重要的,巨大的成功.软件工程师和开发人员的一个通病是他们倾向于高估复杂的问题.
通常当开发人员遇到问题时,他们会把问题分解成更好理解的更小的子问题,但是我敢说开发人员中的十有八九还是会犯错误,他们不能把问题分解成足够小,且易于理解的小问题.这将导致很简单的问题却有较复杂的方案,另外一个副作用是代码的膨胀,就像BASIC语言中到处充满了goto语句,Java语言中一个class有500-1000多行代码,每个class中的method包含好几百行代码.
这些代码块大都是对原始方案的例外情况的处理.如果开发人员把问题分解为更小,这些例外情况将会得到更好的处理.
有许多步骤可以遵循,有些相当简单,有一些具有挑战性.就像听起来那么容易一样,保持简单是耐心的问题,是否能使用该原则大部分取决于你自己.
存在很多使用KISS原则的成功案例,我将寻找一个真正很棒的案例张贴出来.同时,我乐意跟大家分享下面的一些想法:
世界上一些最伟大的算法中总是只有那么几行代码.并且当我们走查这些代码时,我们能够轻松理解它.这些算法的发明者对问题进行反复分解直到容易理解,从而使得他/她可以执行它.许多问题的解决者并不是伟大的编码人员,但是他们编写出伟大的代码.
绝对不是这样的,它适合所有其他编程语言,并且延伸到生活中的一些其他领域,KISS原则不适合于以下领域:情绪,爱情和最重要的婚姻:-)
KISS原则目的:简单
KISS实现方式:逐步分解,直到不能再细分
所以KISS原则中的简单是:
'不需要译码'的简单
不能再简单的简单
一目了然的简单
大众化的简单
正如高中数学证明题中经常使用的显然成立,KISS原则指导我们把复杂的事情经过分解后变得显然简单 .