有意義的命名 目的就是在讓人讀完程式碼之後就知道在幹嘛
舉例來說
C#
public List<int[]> GetList(List<int[]> LJ) { List<int[]> ListK = new List<int[]>(); foreach (int[] i in LJ) { if (i[0] == 1) { ListK.Add(i); } } return ListK; }看完上面的範例之後其實完全不知道程式在幹嘛
讓我們在來看看下面的範例
public List<int[]> GetOpenTVList(List<int[]> TVList) { List<int[]> TV_OnList = new List<int[]>(); foreach (int[] TV in TVList) { if (TV[State] == State_TV_On) { TV_OnList .Add(TV); } } return TV_OnList; }上下兩段程式的執行結果其實是一模一樣的
但是我相信下面的code看起來比較知道在幹嘛......吧(至少我是這樣覺得~_~)
這個function的工作就是從所有的電視中找出目前是開著的電視
關於變數的命名盡量使用有意義的命名 例如 ListJ vs TVList
使用可發音的變數 LJ vs TVList
使用不可發音的變數 會讓讀code的人去猜測他的用處 這是非常不好的情況
關於數字盡量使用variable去代替 例如 1 vs State_TV_On
當程式變得龐大時 搜尋 1 和 State_TV_On 的結果是完全不同的
在介面實作部分
舉例來說許多人習慣這樣寫
abstract class ICellPhoneFactory { } class CellPhoneFactory { }這樣寫其實並不好 我們並不希望使用者知道我們給他的interface
所以與其這樣寫不如
abstract class CellPhoneFactory { } class OEMCellPhoneFactory { }使用者只需知道這是一個CellPhoneFactory
關於類別的命名 應該要清楚 例如 Customer vs Data
關於方法的命名 要取出資料就應該有 Get 例如 GetCustomerData
要設定資料就應該有 Set 例如 SetCustomerId
要判斷資料就應該有 Is 例如 IsMyCustomer
書中有特別強調 命名的時候不要裝可愛 不要發揮幽默感 請正常的命名
沒有人會知道 IsMmmmmonsterKill 這個function是幹嘛用的 XDD
請用正常的命名方式 IsKillManyPeople
在方法得命名時不要出現兩種命名方式 例如 GetData 和 AccessData
請統一用同一種方式命名
在套用某些pattern或演算法時 盡量使用那些術語 讓讀程式的人能一眼看出這是在做甚麼
例如 CustomerFactory 閱讀的人一眼就知道這是個factory
結論 :
寫程式的命名就像是在寫作文一般
最好的programmer 就是讓使用者一眼就看出你現在想幹嘛
使用者根本不需要去看 function裡面實踐甚麼
只需要看主架構就知道程式的功能
好好的學習命名 這也是一門學問
沒有留言:
張貼留言