《The Elements of Programming Style. 》是一本很古老的書,
《The Elements of Programming Style 》老人言
。盡管 Fortran 我們不太使用,盡管新奇的語言層出不窮,但這些,30 年的歲月依舊無法掩蓋其中的真知灼見。(相關(guān)閱讀:《比《代碼大全》好的兩本書》)英文版的 google 一下到處有,云風(fēng)試著摘譯幾條。
把代碼寫清楚,別耍小聰明。
想干什么,講的簡單點(diǎn)、直接點(diǎn)。
只要有可能,使用庫函數(shù)。
避免使用太多的臨時變量。
”效率“不是犧牲清晰性的理由。
讓機(jī)器去干那些臟活。
重復(fù)的表達(dá)式應(yīng)該換成函數(shù)調(diào)用。
加上括號、避免歧義。
不要使用含糊不清的變量名。
把不必要的分支去掉。
使用語言的好特性,不要使用那些糟糕的特性。
該用邏輯表達(dá)式的時候,不要使用過多的條件分支。
如果邏輯表達(dá)式不好理解,就試著做下變形。
選擇讓程序更簡潔的數(shù)據(jù)表達(dá)形式。
先用偽代碼寫,再翻譯成你使用的語言。
模塊化。使用過程和函數(shù)。
只要你能保證程序的可讀性,能不用 goto 就別用 。
不要給糟糕的代碼打補(bǔ)丁 - 重寫就是了。
把大的程序分成一小片一小片來寫,分塊測試。
使用遞歸程序來處理遞歸定義的數(shù)據(jù)結(jié)構(gòu)。
正確和錯誤的輸入數(shù)據(jù)都要測試。
確保輸入不會超出程序的限制。
依靠文件結(jié)束來終止輸入,而不是依賴一個記數(shù)。
把文件結(jié)束作為一個輸入狀態(tài)來處理。
識別出錯誤的輸入;如果有可能就修復(fù)它。
讓輸入數(shù)據(jù)很容易構(gòu)造出來,讓輸出數(shù)據(jù)不言自明,
管理資料
《《The Elements of Programming Style 》老人言》(http://www.szmdbiao.com)。使用統(tǒng)一的輸入格式。
讓輸入容易校對。
如有可能,提供更自由的輸入格式。
使用輸入提示,允許使用默認(rèn)值。并把它們顯示出來。
把輸入輸出放到子程序里。
確保所有的變量在使用前都有初始化。
不要因為一個 bug 而停止不前。
打開編譯程序的調(diào)試選項。
常量結(jié)構(gòu)用數(shù)據(jù)聲明初始化,變量結(jié)構(gòu)用執(zhí)行代碼初始化。
小心 off-by-one 錯誤。
當(dāng)循環(huán)中有多個跳出點(diǎn)時要小心。
如果什么都不做,那么也要優(yōu)雅的表現(xiàn)出這個意思。
用邊界值測試程序。
手工檢查一些答案。
防御式編程 - 為不可能的情況寫幾句代碼。
10.0 乘 0.1 很難保證永遠(yuǎn)是 1.0 。
7/8 等于 0 ,而 7.0/8.0 不等于 0 。
不要直接判斷兩個浮點(diǎn)數(shù)相等。
先做對,再弄快。
先使其可靠,再讓其更快。
先把代碼弄干凈,再讓它變快。
別為了獲得一丁點(diǎn)“性能”就犧牲掉整潔。
讓編譯器做些簡單的優(yōu)化。
不要過分追求重用代碼;下次用的時候重新組織一下即可。
確保特殊的情況是真的特殊。
保持簡潔以獲得速度。
不要死磕代碼來加快速度 - 找個更好的算法。
用工具分析你的程序。在做“性能”改進(jìn)前先評測一下。
確保注釋和代碼一致。
不要在注釋里僅僅重復(fù)代碼 - 讓每處注釋都有價值。
不要給糟糕的代碼做注釋 - 應(yīng)該重寫它。
給變量都起個有意義的名字。
把程序重新整理一下,讓閱讀代碼的人更容易理解。
為你的數(shù)據(jù)布局寫一個文檔。
不要過分注釋。
本文來自:http://blog.codingnow.com/2009/07/the_elements_of_programming_style.html