1、名稱代表意圖:
變數、函式或類別的名稱,應該要告訴我們,為甚麼會在這裡出現、要做甚麼用以及要如何使用它。假設我們正在開發一款踩地雷遊戲,盤面是由一連串儲存格組成,每個儲存格都由一個簡單的陣列表示,索引0代表地雷格的狀態值,狀態值為4代表此地雷格已被插旗,這邊改用Cell類別取代原有整數陣列,如此一來Cell類別就能擁有一個透露意圖的函式(命名為isFlagged)。
錯誤:public List<int[]> getThem(){
List<int[]> list1 = new ArrayList<int[]>();
for(int[] x : theList)
if(x[0] == 4)
list1.add(x);
return list1;
}
正確:public List<Cell> getFlaggedCells(){
List<Cell> flaggedCells = new ArrayList<Cell>();
for(Cell cell : gameBoard)
if(cell.isFlagged)
flaggedCells .add(cell);
return flaggedCells ;
}
2、產生有意義的區別:
假如我們有一個Product類別,就不要有ProductInfo或ProductData類別,Info和Data是不可區分的無意義字詞,或像不要同時有getAccount()、getAccounts()、getAccountInfo(),這類無法從名稱區分的函式。
3、使用能唸出來的名稱:
一般而言長命名勝過短命名,不要隨意縮寫,例如名稱generationTimestamp就比genymdhms好。
4、使用可被搜尋的名稱:
如果一個變數或常數不少地方都使用得到,最好給他一個容易被搜索到的名稱,如const int WORK_DAYS_PER_WEEK = 5。
5、成員變數的字首:
通常我們傾向縮小函式和類別,成員變數不需要加上字首m_這多餘贅字。
6、每個概念使用一種字詞:
像fetch、retrieve和get不同名稱但意思類似,就不適合同時使用,盡量使用一致的詞彙
7、使用慣例的命名:
const 變數名稱全用大寫(如PI)。類別開頭大寫,且習慣用名詞或名詞片語(像Customer)。方法開頭小寫且應使用動詞或動詞片語(像deletePage)。取出器用get當字首、修改器用set當字首、判定用is當字首
留言列表