良好程式設計原理

banq發表於2011-07-25
The Principles of Good Programming

Artima最新文章,作者正在搞C培訓,總結以下幾個原理:
1.DRY(擰乾程式碼不要有水分) 不要有重複程式碼,很多概念實際就是為此存在,比如loops function和classes等等,如果有重複,進行抽象。http://en.wikipedia.org/wiki/Don%27t_repeat_yourself


2.抽象原理,和DRY有關,程式碼中沒一個重要的功能塊都應該擰乾抽象一下。http://en.wikipedia.org/wiki/Abstraction_principle_(programming)

3.KISS(Keep it simple, stupid!),簡化避免複雜是關鍵目標,簡單程式碼花費時間短(程式碼寫得少,腦子動得不見得少),少程式碼有較少BUGs和更易於修改。(banq:耦合都很高的程式碼有時很簡單,但不易於修改)http://en.wikipedia.org/wiki/KISS_principle

4.避免創造YAGNI,不要增加你不需要的功能:http://en.wikipedia.org/wiki/YAGNI

5.做最簡單隻要能工作的設計,始終問自己,這樣簡單設計能夠工作嗎?http://c2.com/xp/DoTheSimplestThingThatCouldPossiblyWork.html

6.不要讓我思考,程式碼應該易於理解。http://www.sensible.com/dmmt.html

7.開閉原則 軟體實體如classes類 模組和functions應該開放易於擴充套件,但是不允許修改,不要寫其他人能夠修改的類,而是寫出人們能夠擴充套件的類(banq:可用物件導向的繼承 實現等方法擴充套件多個子類)。

http://en.wikipedia.org/wiki/Open_Closed_Principle

8.寫程式碼要值得將來維護。http://c2.com/cgi/wiki?CodeForTheMaintainer

8.做最少令人驚訝的事,程式碼易於理解,名稱等各方面不要讓人產生驚訝的副作用。http://en.wikipedia.org/wiki/Single_responsibility_principle

9.最少耦合,程式碼(程式碼塊,函式,類,等等)的任何部分,應儘量減少對其他地區的程式碼的依賴關係。這是透過使用盡可能少的共享變數 。“低耦合往往是一個結構完善的計算機系統的標誌和一個好的設計,高凝聚力相結合,實現更高的可讀性和可維護性的總體目標

http://en.wikipedia.org/wiki/Coupling_(computer_programming)

10.最大化凝聚性:相同功能程式碼應該在同樣一個元件中。http://en.wikipedia.org/wiki/Cohesion_(computer_science)

11.隱藏實現細節,隱藏實現細節,將允許改變執行程式碼元件,而最低限度影響的任何其他使用該元件的模組(實現細節怎麼做是戰術,做什麼是方向戰略)http://en.wikipedia.org/wiki/Information_Hiding

12.迪米特Demeter法則 ,程式碼元件只應該和他們的直接關係聯絡(直系血緣關係),如他們繼承的父類,包含的物件和引數傳遞的物件http://en.wikipedia.org/wiki/Law_of_Demeter

13.避免過早最佳化,除非你的程式碼比你預期慢,否則不要提早最佳化,過早最佳化是罪惡根源,http://en.wikipedia.org/wiki/Program_optimization

14.程式碼能夠重用是好的,重用程式碼提高程式碼的可靠性,縮短開發時間。http://en.wikipedia.org/wiki/Code_reuse

15.分散關注:不同功能區域,應該由不同程式碼和最小重疊的模組組成。(AOP是分散關注典型模式)

16.擁抱變化,這是一本Kent Beck書籍副標題,也被認為是極限程式設計和敏捷方法在一般的宗旨。最大限度地減少耦合使程式碼更容易改變。無論你是一個極端程式設計的醫生,這種方法對於編寫程式碼是有道理的。






相關文章