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書籍副標題,也被認爲是極限編程和敏捷方法在一般的宗旨。最大限度地減少耦合使代碼更容易改變。無論你是一個極端編程的醫生,這種方法對於編寫代碼是有道理的。
The Principles of Good Programming
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
讀郭欣《構建高性能Web站點》筆記(1)
znlingdong
2019-02-23 13:29:59
改良程序的11個技巧
xiaovfight
2019-02-23 13:06:44
窗體編程之窗體的事件
ers456
2019-02-23 13:43:17
菜鳥創建優秀網頁的6個好習慣.
verytt
2019-02-23 13:40:45
Java技術學習:如何保證同一資源被多個線程併發訪問時的完整性?
QFdongdong
2019-02-23 13:24:15
Java行業新手如何適應工作?
QFdongdong
2019-02-23 13:24:15
Windows編程 第四回 Windows程序的生與死(下)
hu_jiacheng
2019-02-23 13:05:18