程式碼撰寫原則(Programming Rules)

若您覺得文章寫得不錯,請點選文章上的廣告,來支持小編,謝謝。

本部落格的文章「程式碼維護上的難題(The Challenges and Difficulties of Code Maintenance)」說明了程式碼若沒有好好撰寫時,往往會造成維護上的困難。於是筆者參考網路資源與自己經驗來整理出來一些常見的 Programming Rules 之要點,細節說明還請讀者自行閱讀參考資料。

風格(Style):
全域變數使用描述性的名稱,局部變數則使用簡短的名稱。
保持一致。
函式採用主動的名稱。
保持精確。
利用縮排來顯示結構。
表示式使用自然形式。
利用括號來讓語意明確。
拆開複雜的表示式。
保持清楚。
當心副作用。
使用一致的縮排風格與大括號風格。
採用慣用的表達方式以保持一致。
利用else-if來處理多重決策。
避免使用函式巨集。
將巨集主體和引數以括弧圍住。
為魔術數字取名稱。
使用字元常數,不要使用整數常數。
利用程式語言計算某個物件的大小。
不要在明顯的事情上花太多功夫。
註解函式和全域資料。
不要註解爛程式碼,乾脆改寫它。
註解不要與程式碼牴觸。
保持清晰,不要製造困惑。

介面(Interface)
隱藏實作細節。
選擇一小組剛好夠用的原始功能。
不要在使用者背後做些他們無法察覺的事。
每一個地方都用同樣的方式作同一件事。
以和配置資源相同的層級來釋放資源。
在低階的地方偵測錯誤,在高階的地方處理它們。
只有在例外的情況下才使用例外。

除錯(Debuggin):
尋找你熟悉的樣式。
檢視最近所做的動作。
不要犯兩次相同的錯誤。
立刻除錯,不要等到以後。
取得堆疊蹤跡。
開始修改之前先閱讀程式碼內容。
向另一個人解釋你的程式碼。
讓臭蟲能夠重現。
先分化再征服。
研究失敗數理學。
顯示輸出來為你的搜尋定位。
撰寫自我檢查碼。
寫下一個日誌檔。
畫一張圖。
運用工具。
保存紀錄。

測試(Testing):
在邊界測試程式碼。
測試前置條件與後置條件。
運用聲明。
以防衛的態度設計程式。
檢查回傳的錯誤。
以遞增的方式測試。
優先測試簡單的部分。
明白你預期的是什麼樣子的輸出。
查驗保存的特性。
比較互相獨立的實作內容。
評估測試所涵蓋的範圍。
讓回歸測試自動化。
建立獨立的測試。

效能(Performance):
使時間測定自動化。
運用效能分析工具。
將注意力集中在問題點上。
畫一張圖。
採用較佳的演算法或資料結構。
啟動編譯程式最佳化功能。
調整程式碼。
無關緊要的東西不要做最佳化處理。
集中共同的子表示式。
以廉價的操作取代昂貴的操作。
展開迴圈或是將它們刪除。
以快取緩衝區處理經常使用的值。
寫一個特殊目的之配置函式。
緩衝處理輸入與輸出。
分開處理特殊案例。
預先計算結果。
利用近似值。
以低階語言改寫。
採用可能的最小資料型態來節省空間。
不要儲存你能輕易計算的東西。

移植性(Portability):
遵循標準。
以主流的方式設計程式。
當心程式語言的問題點。
多嘗試幾種編譯程式。
使用標準函式庫。
只使用那些到處都有的功能。
避免條件式編譯。
把和系統相依的事物分開在不同的檔案中。
把和系統相依的事物隱藏在介面後面。
使用文字來交換資料。
用固定位元組順序來交換資料。
如果你變更了規格,就改變名稱。
與現有的程式及資料保持相容。
不要預先假設使用的都是ASCII。
不要以英文為預設角度。

沒有留言: