自己總結的C#編碼規範--2.命名選擇篇

來源:互聯網
上載者:User

標籤:des   style   blog   http   color   使用   檔案   資料   

上一篇文章講了標識符命名的約定,今天講下標識符命名的選擇。

簡單的講,看到一個標識符一定要可以見名知意。

 

  • 名字一定要能夠表達出標識符的含意

標識符名字必須要表達出該標識符的意義,絕對不可以使用無意義的v1,v2…vn之類的命名。

public static void CloneChars(char[] cl1, char[] cl2)

{

for (var i = 0; i < cl1.Count(); i++)

{

cl2[i] = cl1[i];

}

}

代碼的調用者不看這函數是無法知道cl1還是cl2是要拷貝的char數組,他必須進到這個函數去看完整個邏輯才可以調用。而且在看的過程中cl2[i] = cl1[i]; 也需要他花幾秒鐘來思考是做什麼的。

如果改成有意義的名字: source 和target那麼這個方法調用者一看名字就知道使用方法了。

public static void CloneChars(char[] source, char[] target)

{

for (var i = 0; i < source.Count(); i++)

{

target[i] = source[i];

}

}

  • 選擇意義單一明確的名字

在命名時要使用專業的單詞,避免使用"空洞"的單詞

如: class BinaryTree

{

public int Size()

看到這行代碼你想到Size會返回什麼,樹的高度,節點數還是樹在記憶體中的空間?

我們可以使用更單一明確的詞來告訴讀者這個方法的具體含義,如Height,NodesNum,Memory_Bytes

  • 使用不會產生歧義的名字

在給標識符命名時,一定不能產生歧義,代碼中的很多錯誤都是由於命名時的歧義造成的。例如:

public const int CART_TOO_BIG_LIMIT = 10;

if (ShoppingCart.Count() >= CART_TOO_BIG_LIMIT)

{

LogError("Too many items in cart.");

}

這段代碼有個很經典的"大小差一缺陷"。在判斷購物車物品上限時,我是應該使用 ">"還是應該使用">=",我是無法從代碼中判斷出來的,所以這個地方很容易出現bug.如果我們換成MAX_ITEMS_IN_CART, 那我馬上就可以判定出這裡要使用">"。

 

  • 命名要與使用者的期望相匹配

有些名字之所以會讓人誤解是因為帶嗎閱讀者對它們有先入為主的印象,就算你本意並非如此。這種情況下,你最好是選用一個與使用者期望所匹配的名字。

如很多程式員都習慣了把Get開始的方法當作"輕量級訪問器",他只是簡單的返回成員變數。

大家看到以下的代碼

class BinaryTree

{

public int GetNodesCount()

會以為只是返回內部private int _nodesCount; 私人變數的訪問器。

但如果實際你的代碼可能是一個非常耗時的代碼,內部實現是廣度優先遍曆所有的樹節點,還要去資料庫尋找父節點和子節點的關係,然後累加。

那麼這麼一個耗時的方法可能由於你的命名,導致了被調用者反覆多次的調用,導致整個系統效能下降。

如果你將命名改為ComputeNodesCount那麼調用者就會知道這是個耗時的操作,需要緩衝調用結果並減少調用。

  • 為名字附加更多的資訊

一個變數名就像一個小注釋,儘管空間不大,但不管你在命中擠進任何額外的資訊,每次有人看到命名時都會看到這些資訊。

 

例子:當你從網頁接收了請求的表單,裡面可能還有不安全的代碼,如注入語句等,這時你在命名時需要體現該資料不安全,可以使用unsafeFormData,當調用完安全檢查方法後可以將其改為 safeFormData = HandleUnsafeData(unsafeFormData).這樣代碼閱讀者就知道可以放心的使用該變數了。

下表給出了更多需要給名字附加額外資訊的例子

  • 不要賣弄風騷

使用最常用,眾所周知的單詞。不要在代碼命名時賣弄你的學識,要讓你的代碼快速準確的表達出你的想法才是真正的牛人。

如public static string ConvertXml2Html (string sourcePath)

有些人在看到這個方法的時候怎麼想也想不明白這個2是做什麼用的,是把一個Xml檔案變成兩個Html?

熟悉英語文化的人可能知道這是To的俚語表達。如果你不能保證所有閱讀你代碼的人都知道2是To的縮寫。那麼請使用ConvertXmlToHtml命名。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.