close

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類別,就不要有ProductInfoProductData類別,InfoData是不可區分的無意義字詞,或像不要同時有getAccount()getAccounts()getAccountInfo(),這類無法從名稱區分的函式。

 

3、使用能唸出來的名稱:

一般而言長命名勝過短命名,不要隨意縮寫,例如名稱generationTimestamp就比genymdhms好。

 

4、使用可被搜尋的名稱:

如果一個變數或常數不少地方都使用得到,最好給他一個容易被搜索到的名稱,如const int WORK_DAYS_PER_WEEK = 5

 

5、成員變數的字首:

通常我們傾向縮小函式和類別,成員變數不需要加上字首m_這多餘贅字。

 

6、每個概念使用一種字詞:

fetchretrieveget不同名稱但意思類似,就不適合同時使用,盡量使用一致的詞彙

 

7、使用慣例的命名:

const 變數名稱全用大寫(PI)。類別開頭大寫,且習慣用名詞或名詞片語(Customer)。方法開頭小寫且應使用動詞或動詞片語(deletePage)。取出器用get當字首、修改器用set當字首、判定用is當字首

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 阿洲 的頭像
    阿洲

    阿洲程式天地

    阿洲 發表在 痞客邦 留言(0) 人氣()