原始日期:html
2017-02-06 16:20算法
《The Elements of Programming Style 》是一本很古老的書。儘管 Fortran 咱們不太使用,儘管新奇的語言層出不窮,但這些,30 年的歲月依舊沒法掩蓋其中的真知灼見。英文版的 google一下處處有。
把代碼寫清楚,別耍小聰明。
想幹什麼,講的簡單點、直接點。
只要有可能,使用庫函數。
避免使用太多的臨時變量。
」效率「不是犧牲清晰性的理由。
讓機器去幹那些髒活。
重複的表達式應該換成函數調用。
加上括號、避免歧義。
不要使用含糊不清的變量名。
把沒必要要的分支去掉。
使用語言的好特性,不要使用那些糟糕的特性。
該用邏輯表達式的時候,不要使用過多的條件分支。
若是邏輯表達式很差理解,就試着作下變形。
選擇讓程序更簡潔的數據表達形式。
先用僞代碼寫,再翻譯成你使用的語言。
模塊化。使用過程和函數。
只要你能保證程序的可讀性,能不用 goto 就別用 。
不要給糟糕的代碼打補丁 - 重寫就是了。
把大的程序分紅一小片一小片來寫,分塊測試。
使用遞歸程序來處理遞歸定義的數據結構。
正確和錯誤的輸入數據都要測試。
確保輸入不會超出程序的限制。
依靠文件結束來終止輸入,而不是依賴一個記數。
把文件結束做爲一個輸入狀態來處理。
識別出錯誤的輸入;若是有可能就修復它。
讓輸入數據很容易構造出來,讓輸出數據不言自明。
使用統一的輸入格式。
讓輸入容易校對。
若有可能,提供更自由的輸入格式。
使用輸入提示,容許使用默認值。並把它們顯示出來。
把輸入輸出放到子程序裏。
確保全部的變量在使用前都有初始化。
不要由於一個 bug 而中止不前。
打開編譯程序的調試選項。
常量結構用數據聲明初始化,變量結構用執行代碼初始化。
當心 off-by-one 錯誤。
當循環中有多個跳出點時要當心。
若是什麼都不作,那麼也要優雅的表現出這個意思。
用邊界值測試程序。
手工檢查一些答案。
防護式編程 - 爲不可能的狀況寫幾句代碼。
10.0 乘 0.1 很難保證永遠是 1.0 。
7/8 等於 0 ,而 7.0/8.0 不等於 0 。
不要直接判斷兩個浮點數相等。
先作對,再弄快。
先使其可靠,再讓其更快。
先把代碼弄乾淨,再讓它變快。
別爲了得到一丁點「性能」就犧牲掉整潔。
讓編譯器作些簡單的優化。
不要過度追求重用代碼;下次用的時候從新組織一下便可。
確保特殊的狀況是真的特殊。
保持簡潔以得到速度。
不要死磕代碼來加快速度 - 找個更好的算法。
用工具分析你的程序。在作「性能」改進前先評測一下。
確保註釋和代碼一致。
不要在註釋裏僅僅重複代碼 - 讓每處註釋都有價值。
不要給糟糕的代碼作註釋 - 應該重寫它。
給變量都起個有意義的名字。
把程序從新整理一下,讓閱讀代碼的人更容易理解。
爲你的數據佈局寫一個文檔。
不要過度註釋。編程
來源:http://blog.chinaunix.net/uid-21736802-id-1817764.html數據結構