1.不要自我重復
這也許是在編程開發這最最基本的壹個信條,就是要告訴妳不要出現重復的代碼。我們很多的編程結構之所以存在,就是為了幫助我們消除重復(例如,循環語句,函數,類,等等)。壹旦程序裏開始有重復現象的出現(例如很長的表達式、壹大堆的語句,但都是為了表達相同的概念),妳就需要對代碼進行壹次新的提煉,抽象。
2.提煉原則
跟“不要自我重復原則”相關,這壹原則是說“程序中任何壹段具有功能性的代碼在源代碼文件中應該唯壹的存在。”
3.保持簡單
簡單化(避免復雜)永遠都應該是妳的頭等目標。簡單的程序讓妳寫起來容易,產生的bug更少,更容易維護修改。
4.不要開發妳目前用不到的功能
除非妳真正需要用到它,否則不要輕易加上那些亂七八糟用不到的功能。
5.用最簡單的方法讓程序跑起來
在開發時有個非常好的問題妳需要問問自己,“怎樣才能最簡單的讓程序跑起來?”這能幫助我們在設計時讓程序保持簡單。
6.不要讓我動腦子
這實際上是SteveKrug
關於web界面操作的壹本書的書名,但也適用於編程。主旨是,程序代碼應該讓人們花最小的努力就能讀懂和理解。如果壹段程序對於閱讀者來說需要花費太多的努力才能理解,那它很可能需要進壹步簡化。
7.開放/封閉原則
程序裏的實體項(類,模塊,函數等)應該對擴展行為開放,對修改行為關閉。換句話說,不要寫允許別人修改的類,應該寫能讓人們擴展的類。
8.為維護者寫程序
任何值得妳編寫的程序在將來都是值得妳去維護的,也許由妳維護,也許由他人。在將來,當妳不得不維護這些程序時,妳對這些代碼的記憶會基本上跟壹個陌生人壹樣,所以,妳最好還是當成壹直在給別人寫程序。壹個有助於妳記住這個原則的辦法是“寫程序時時刻記著,這個將來要維護妳寫的程序的人是壹個有嚴重暴力傾向,並且知道妳住在哪裏的精神變態者”。
9.最少意外原則
最少意外原則通常是使用在用戶界面設計上,但這個原則同樣適用於編寫程序。程序代碼應盡可能的不要讓閱讀者感到意外。也就是說應該遵循編碼規範和常見習慣,按照公認的習慣方式進行組織和命名,不符常規的編程動作應該盡可能的避免。
10.單壹職責原則
壹個代碼組件(例如類或函數)應該只執行單壹的預設的任務。
11.最小化耦合關系
壹個代碼片段(代碼塊,函數,類等)應該最小化它對其它代碼的依賴。這個目標通過盡可能少的使用***享變量來實現。“低耦合是壹個計算機系統結構合理、設計優秀的標誌,把它與高聚合特征聯合起來,會對可讀性和可維護性等重要目標的實現具有重要的意義。”
12.最大化內聚性
具有相似功能的代碼應該放在同壹個代碼組件裏。
13.隱藏實現細節
隱藏實現細節能最小化妳在修改程序組件時產生的對那些使用這個組件的其它程序模塊的影響。
14.笛米特法則
程序組件應該只跟它的直系親屬有關系(例如繼承類,內包含的對象,通過參數入口傳入的對象等。)
15.避免過早優化
只有當妳的程序沒有其它問題,只是比妳預期的要慢時,妳才能去考慮優化工作。只有當其它工作都做完後,妳才能考慮優化問題,而且妳只應該依據經驗做法來優化。“對於小幅度的性能改進都不該考慮,要優化就應該是97%的性能提升:過早優化是壹切罪惡的根源”—Donald
Knuth。
16.代碼復用
這不是非常核心的原則,但它跟其它原則壹樣非常有價值。代碼復用能提高程序的可靠性,節省妳的開發時間。
17.職責分離
不同領域的功能應該由完全不同的代碼模塊來管理,盡量減少這樣的模塊之間的重疊。
18.擁抱變化
這是Kent
Beck的壹本書的副標題,它也是極限編程和敏捷開發方法的基本信條之壹。很多的其它原則都基於此觀念:面對變化,歡迎變化。事實上,壹些經典的軟件工程原則,例如最小化耦合,就是為了讓程序更容易面對變化。不論妳是否采用了極限編程方法,這個原則對妳的程序開發都有重要意義。
其實都是壹些老生常談的話,重要的是在於妳怎麽去落實。妳說呢?