Please enable JavaScript.
Coggle requires JavaScript to display documents.
易讀程式之美學 9789862767191 (表層改善 (CH2 命名 (命名長短 (縮寫 (必須被廣泛理解), IDE有快速鍵;快速找變數,…
易讀程式之美學
表層改善
CH2 命名
選擇豐富資訊的詞彙
範例
少用tmp或retval
通用名稱
變數週期短才適用
迴圈循環子
原本
for (int i=0; i< clubs.size();i++)
改善
i 改成 ci 或 club_i
加入額外單位
單位
範例
在避免有誤解的情況下才需增加
範例
命名長短
IDE有快速鍵;快速找變數
看變數的使用範圍;越大,訊息需含越多
縮寫
必須被廣泛理解
常見規範
變數
類別名
駝峰式
CamelCase
變數
小寫底線區分
lower_separated
CH3 誤解
不要使用 filter, 要用 select, exclude
clip 可以改為 truncate(text,length)
區間
包含邊界的極值
用max和min
閉區間
用first 和last
不要用stop
代表包含邊界 (包含兩端點)
半開區間
用begin和end
只含區間,不包含終點
布林
加上is ,has, can, should
避免使用否定敘述
disable_ssl=true; (不好)
use_ssl =true; (好)
CH5 註解
不該註解
很快就能從代碼了解的
解釋不好名稱的意義
不用註解,直接修正改CODE
好程式>壞程式+註解
紀錄撰寫(代碼)時的想法
範例
//二元樹比雜湊快40%
//計算雜湊成本比左/右來的高
不用浪費時間做最佳化
//啟發式計算 (heuristic)會漏掉幾個字,沒辦法100%解決
避免之後讀者以為是有BUG
註解代碼缺陷
TODO (作者來沒處理的部分)
FIXME: (已知問題)
HACK: 承認方法不夠優雅
XXX: (危險!重要問題)
常數註解
一行即可
const int MAX_RSS_SUBSCRIPTIONS=100 // .....
註解合理限制
最佳值
未之後讀者著想,想像之後讀者需要的東西
預期出現的問題
EX: 怎不用clear() 而是用vector交換 //強制釋放記憶體
註明可能的陷阱
怕被誤用
可加上「實做細節」 // 呼叫外部服務發送 email (逾時時間為 1 min)
比較不尋常
加上時間複雜度 // O(number_tags * average_tag_depth)
避免輸入不合理的值
全局註解
讓新進成員在一段輕鬆的談話後,能比自行閱讀程式碼知道更多事
摘要註解
解釋大區塊CODE在做甚麼
for / if /while
簡化迴圈邏輯
重新組織程式碼
精選主題