1.避免重復原則(DRY - Don’t repeat yourself)
編程的最基本原則是避免重復也切。在程序代碼中總會有很多結(jié)構(gòu)體憔购,如循環(huán)钥星、函數(shù)嗡害、類等等辙芍。一旦你重復某個語句或概念型诚,就會很容易形成一個抽象體逢捺。
2.抽象原則(Abstraction Principle )
與DRY原則相關丧没。要記住人弓,程序代碼中每一個重要的功能沼死,只能出現(xiàn)在源代碼的一個位置。
3.簡單原則(Keep It Simple and Stupid )
簡單是軟件設計的目標崔赌,簡單的代碼占用時間少意蛀,漏洞少,并且易于修改健芭。
4.避免創(chuàng)建你不要的代碼 Avoid Creating a YAGNI (You aren’t going to need it)
除非你需要它县钥,否則別創(chuàng)建新功能。
5.盡可能做可運行的最簡單的事(Do the simplest thing that could possibly work
盡可能做可運行的最簡單的事慈迈。在編程中若贮,一定要保持簡單原則。作為一名程序員不斷的反思“如何在工作中做到簡化呢痒留?”這將有助于在設計中保持簡單的路徑谴麦。
6.別讓我思考(Don’t make me think )
這是Steve Krug一本書的標題,同時也和編程有關狭瞎。所編寫的代碼一定要易于讀易于理解细移,這樣別人才會欣賞,也能夠給你提出合理化的建議熊锭。相反弧轧,若是繁雜難解的程序雪侥,其他人總是會避而遠之的。
7.開閉原則(Open/Closed Principle)
你所編寫的軟件實體(類精绎、模塊速缨、函數(shù)等)最好是開源的,這樣別人可以拓展開發(fā)代乃。不過旬牲,對于你的代碼,得限定別人不得修改搁吓。換句話說原茅,別人可以基于你的代碼進行拓展編寫,但卻不能修改你的代碼堕仔。
8.代碼維護(Write Code for the Maintainer)
一個優(yōu)秀的代碼擂橘,應當使本人或是他人在將來都能夠?qū)λ^續(xù)編寫或維護。代碼維護時摩骨,或許本人會比較容易通贞,但對他人卻比較麻煩。因此你寫的代碼要盡可能保證他人能夠容易維護恼五。用書中原話說“如果一個維護者不再繼續(xù)維護你的代碼昌罩,很可能他就有想殺了你的沖動≡致”
9.最小驚訝原則(Principle of least astonishment)
最小驚訝原則通常是在用戶界面方面引用茎用,但同樣適用于編寫的代碼。代碼應該盡可能減少讓讀者驚喜睬罗。也就是說绘搞,你編寫的代碼只需按照項目的要求來編寫。其他華麗的功能就不必了傅物,以免弄巧成拙。
10.單一責任原則(Single Responsibility Principle)
某個代碼的功能琉预,應該保證只有單一的明確的執(zhí)行任務董饰。
11.低耦合原則(Minimize Coupling)
代碼的任何一個部分應該減少對其他區(qū)域代碼的依賴關系。盡量不要使用共享參數(shù)圆米。低耦合往往是完美結(jié)構(gòu)系統(tǒng)和優(yōu)秀設計的標志卒暂。
12.最大限度凝聚原則(Maximize Cohesion)
相似的功能代碼應盡量放在一個部分。
13.隱藏實現(xiàn)細節(jié)(Hide Implementation Details)
隱藏實現(xiàn)細節(jié)原則娄帖,當其他功能部分發(fā)生變化時也祠,能夠盡可能降低對其他組件的影響。
14.迪米特法則又叫作最少知識原則(Law of Demeter)
該代碼只和與其有直接關系的部分連接近速。(比如:該部分繼承的類诈嘿,包含的對象堪旧,參數(shù)傳遞的對象等)。
15.避免過早優(yōu)化(Avoid Premature Optimization)
除非你的代碼運行的比你想像中的要慢奖亚,否則別去優(yōu)化淳梦。假如你真的想優(yōu)化,就必須先想好如何用數(shù)據(jù)證明昔字,它的速度變快了爆袍。
“過早的優(yōu)化是一切罪惡的根源”——Donald Knuth
16.代碼重用原則(Code Reuse is Good)
重用代碼能提高代碼的可讀性,縮短開發(fā)時間作郭。
17.關注點分離(Separation of Concerns)
不同領域的功能陨囊,應該由不同的代碼和最小重迭的模塊組成。
18.擁抱改變(Embrace Change)
這是Kent Beck一本書的標題夹攒,同時也被認為是極限編程和敏捷方法的宗旨蜘醋。
許多其他原則都是基于這個概念的,即你應該積極面對變化芹助。事實上堂湖,一些較老的編程原則如最小化耦合原則都是為了使代碼能夠容易變化。無論你是否是個極限編程者状土,基于這個原則去編寫代碼會讓你的工作變得更有意義无蜂。
作者簡介:Christopher Diggins是加拿大一位有25年編程經(jīng)驗的資深技術人員,曾效力于Microsoft和Autodesk蒙谓,并創(chuàng)辦過兩家贏利的互聯(lián)網(wǎng)公司斥季。
他是《C++ Cookbook》的作者之一,并自己編寫了一門編程語言Heron累驮。
[轉(zhuǎn)]優(yōu)秀程序設計一十八原則
最后編輯于 :
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
- 文/潘曉璐 我一進店門杠输,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人秕衙,你說我怎么就攤上這事蠢甲。” “怎么了据忘?”我有些...
- 文/不壞的土叔 我叫張陵鹦牛,是天一觀的道長搞糕。 經(jīng)常有香客問我,道長能岩,這世上最難降的妖魔是什么寞宫? 我笑而不...
- 正文 為了忘掉前任,我火速辦了婚禮拉鹃,結(jié)果婚禮上辈赋,老公的妹妹穿的比我還像新娘。我一直安慰自己膏燕,他們只是感情好钥屈,可當我...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著坝辫,像睡著了一般篷就。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上近忙,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼攘残!你這毒婦竟也來了拙友?” 一聲冷哼從身側(cè)響起,我...
- 正文 年R本政府宣布顶考,位于F島的核電站,受9級特大地震影響妖泄,放射性物質(zhì)發(fā)生泄漏驹沿。R本人自食惡果不足惜,卻給世界環(huán)境...
- 文/蒙蒙 一蹈胡、第九天 我趴在偏房一處隱蔽的房頂上張望渊季。 院中可真熱鬧,春花似錦罚渐、人聲如沸却汉。這莊子的主人今日做“春日...
- 文/蒼蘭香墨 我抬頭看了看天上的太陽合砂。三九已至,卻和暖如春源织,著一層夾襖步出監(jiān)牢的瞬間翩伪,已是汗流浹背。 一陣腳步聲響...
推薦閱讀更多精彩內(nèi)容
- 摘要:良好的編程原則與良好的設計工程原則密切相關踢代。本文總結(jié)的這些設計原則,幫助開發(fā)者更有效率的編寫代碼嗅骄,并幫助成為...
- 面向?qū)ο蟪绦蛟O計特點:封裝胳挎、繼承和多態(tài)設計原則、模式不產(chǎn)生代碼溺森,只是代碼邏輯上的一種規(guī)范慕爬。 1.SOLID 一、單...