良好程式設計原理
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書籍副標題,也被認為是極限程式設計和敏捷方法在一般的宗旨。最大限度地減少耦合使程式碼更容易改變。無論你是一個極端程式設計的醫生,這種方法對於編寫程式碼是有道理的。
相關文章
- 如何培養良好的程式設計實踐程式設計
- 如何培養良好的程式設計風格程式設計
- 漫談 C++:良好的程式設計習慣與程式設計要點C++程式設計
- 漫談C++:良好的程式設計習慣與程式設計要點C++程式設計
- google內部使用的良好程式設計習慣Go程式設計
- 如何設計一個良好的API?API
- 如何設計一個良好的API介面?API
- C語言程式設計原理C語言程式設計
- 服務端指南 | 良好的 API 設計指南服務端API
- 程式設計師的燈下黑:堅持和良好心態近乎道程式設計師
- Dart 非同步程式設計和原理Dart非同步程式設計
- 程式設計世界的熵增原理程式設計熵
- Java Socket 程式設計原理及教程Java程式設計
- Socket原理與程式設計基礎程式設計
- 併發程式設計 — CAS 原理詳解程式設計
- 網路程式設計與通訊原理程式設計
- 併發程式設計之 CAS 的原理程式設計
- COMP9021程式設計原理程式設計
- Winsock程式設計初步之<一> Winsock程式設計原理 (轉)程式設計
- 第十二篇:為使用者設計良好的介面
- 併發程式設計之顯式鎖原理程式設計
- Java網路程式設計UDP通訊原理Java程式設計UDP
- 網路程式設計原理與UDP實現程式設計UDP
- UEFI原理與程式設計(一):環境搭建程式設計
- 完美解釋 Javascript 響應式程式設計原理JavaScript程式設計
- 併發程式設計 —— ConcurrentHashMap size 方法原理分析程式設計HashMap
- 函式程式設計基本原理介紹函式程式設計
- 作業系統精髓設計原理 程式排程作業系統
- ABAP 程式語言中 Class(類)的設計原理剖析
- JavaScript 模組化程式設計之載入器原理JavaScript程式設計
- Java併發程式設計:Synchronized及其實現原理Java程式設計synchronized
- 多程序程式設計:原理、技術與應用程式設計
- C#非同步程式設計:原理與實踐C#非同步程式設計
- KubeEdge EdgeMesh設計原理
- 幾種設計良好結構以提高.NET應用效能的方法
- 玩轉 PHP 網路程式設計之原理篇PHP程式設計
- 【譯】JavaScript 中的函數語言程式設計原理JavaScript函數程式設計
- JavaScript深入淺出非同步程式設計二、promise原理JavaScript非同步程式設計Promise