轉(zhuǎn)載請注明出處:http://www.reibang.com/p/7d58b96d0185
什么是KISS原則?
KISS是“Keep It Stupid Simple”或者“Keep It Simple, Stupid”的縮寫介衔。
KISS原則有什么意義赖钞?
這個原則是我多年軟件工程中獲得成功的一個關(guān)鍵纪铺。當今軟件工程師和開發(fā)人員面臨的一個普遍問題是,他們傾向于使問題復雜化搀别。
通常情況下退个,當一個開發(fā)者遇到問題時湾趾,他會將這個問題分解成自己能夠理解的更為細小的問題,然后才會去進行編碼實現(xiàn)這個問題唯鸭。但我想說百分之八九十的開發(fā)者都會犯這樣一個錯:他們并沒有將問題分解的足夠小或者說足夠容易理解须蜗。這導致了一方面可能需要用非常復雜的實現(xiàn)去解決一個非常簡單的問題,另一方面就是代碼寫的像意大利面一樣,代碼非常臃腫混亂明肮,在BASIC中一個goto就可以搞定的事菱农,同樣在Java中可能需要數(shù)百行代碼才可以搞定。
這些混亂的代碼之所以存在柿估,就是因為直到開發(fā)者開始編碼時才發(fā)現(xiàn)之前的解決方案還存在各種異常情況沒考慮到循未。如果開發(fā)者在設(shè)計解決方案時能夠?qū)栴}分解的足夠小,那么這些異常情況就不會被遺漏了秫舌。
我們能夠從KISS原則中獲得什么樣的好處的妖?
- 你將會以更快的速度解決更多的問題
- 你將會用很少的代碼去解決復雜的問題
- 你將能夠?qū)懗龈哔|(zhì)量的代碼
- 你將能夠設(shè)計出更大的系統(tǒng),并且能夠更加容易的維護
- 當新需求來的時候足陨,你的代碼將能夠更靈活嫂粟,更容易的去擴展、修改以及重構(gòu)
- 你將能夠獲得超出你想象的好處
- 因為代碼寫的非常簡潔墨缘,你將能夠在大型的開發(fā)團隊星虹、項目中如魚得水
我如何才能將KISS原則應用到我的工作中?
這兒有幾個非常簡單的步驟可以遵循镊讼,對于有些人來說可能有點挑戰(zhàn)宽涌。聽起來非常容易,保持簡單(keeping it simple)狠毯,這是一個耐心的問題护糖,容易與否完全取決于你自己。
- 保持謙遜嚼松,不要認為自己是一個超級天才嫡良,否則這就是你犯得第一個錯誤。
相反保持謙遜献酗,最后卻一定能夠讓你變成一個超級天才=)寝受,就算你不是天才,也沒關(guān)系罕偎。只要你的代碼寫的足夠簡潔很澄,就算你不是天才也能夠勝任它。(只要代碼寫的足夠簡潔颜及,傻子也能理解) - 把你的任務分解成足夠細小的子任務甩苛,原則上來講,這些子任務的的編碼時間不應該超過4-12小時俏站。
- 把你的問題分析成許多足夠小得問題讯蒲。每一個小問題應該在一個類或者極少的幾個類里解決掉。
- 保持的方法足夠小肄扎,每一個方法原則上不應該超過30-40行代碼墨林。每一個方法應該只解決一個小問題赁酝,而不應該包含多種使用情況。
如果你的方法中有許多條件分支旭等,那么就把他們移除這個方法作為更小的方法酌呆。
這樣做不僅讓代碼更容易閱讀和維護,也會讓你能夠更快的定位bug搔耕。
你要學會去喜歡重構(gòu)你的代碼隙袁。 - 保持你的類足夠小。在方法中描述的方法同樣適用在這里度迂。
- 先想好解決問題的辦法藤乙,然后再進行編碼,而不是相反惭墓。
很多開發(fā)者喜歡一邊編碼一邊解決問題坛梁,當然這也沒沒錯。事實上腊凶,你也可以這樣做划咐,并堅持編碼和解決問題同時進行。
如果你能在編碼的同時钧萍,依然有能力把問題進行分解褐缠,那你就這樣做。不要害怕重構(gòu)你的代碼风瘦。最終結(jié)果才是重要的队魏,代碼行數(shù)并不是一個測量標準,當然了代碼行數(shù)越少越好万搔。 - 不要害怕刪除代碼胡桨。重構(gòu)代碼和二次編碼是非常重要的兩個部分。當你遇到一個之前不存在的需求時瞬雹,或者這個需求在你開始編碼時并沒有被意識到昧谊,你可能會想到一個更好的辦法來解決這些問題。
如果你一直遵循上面的這些建議酗捌,那么重新編寫的代碼量可能非常小呢诬。相反,如果你并沒有遵循這些建議胖缤,那么你的代碼可能處處都需要重新編寫了尚镰。 - 對于其它所有場景,一樣盡可能的保持簡單哪廓,這樣做可能會很難狗唉,但是一旦你做到了,等你回顧的時候撩独,你將會對你取得的成果大吃一驚敞曹。
是否有一些KISS原則的例子?
有非常多综膀,我將會找一些真正非常棒的例子放在這兒澳迫。但是現(xiàn)在我想讓你們思考下面這幾句話。
世界上最牛逼的算法一般都是代碼行數(shù)最少的剧劝。當閱讀這些代碼時橄登,我們能夠非常容易的理解它們。這些算法的創(chuàng)新者讥此,在進行編碼前會將這些問題進行充分分解拢锹,直到這些問題能夠被非常容易的理解與實現(xiàn)。
許多偉大問題的解決者并不是一個偉大的程序員萄喳,但他們依然能夠?qū)懗鰝ゴ蟮拇a卒稳。
KISS原則只適用Java編碼嗎?
很顯然并不是他巨,它適用于其它許多的編程語言充坑,并且可以擴展到你的生活方方面面。
KISS原則不適用的領(lǐng)域有:情感染突、愛捻爷,當然最重要的,不要把它應用到你的婚姻中:)