C# Online ! 第十篇:C# ! 為變數『命名』的時候,要注意哪些細節呢?

  • 20418
  • 0
  • C#
  • 2011-07-08

C# Online ! 第十篇:C# ! 為變數『命名』的時候,要注意哪些細節呢?

我想大部份的玩家都有這種經驗,當出了一款新 Online Game,你躍躍欲試要"踹"一下的時候,一開始選人物會花一些時間,但是會花更多時間在為你的腳色『命名』,對吧!? 所以說 ─ 『命名』 可是一門大學問呀!! 這一篇就要為大家介紹,當我們要為變數『命名』的時候,要注意哪些細節,是不是有一些規則在呢? (看了這一篇~為你的變數命名的時候就不需要拿出黃曆,也不用去請教黃半仙了! 欸! 把你的塔羅牌也收起來呀!)

第九篇舉的簡單例子裡,其實也是有跟著變數命名規則走,等看完這一篇以後,初心者朋友們可以去看看唷,像我們才剛開始學習 C#,這時候知道這些命名規則是最恰當的時機,這樣我們才不會為了幫變數想名稱而花太多時間,也不會當我們使用了太多變數,名稱亂取一通,到最後哪一個變數是哪一個名稱,我們自己都搞不懂,那就糗大啦...!! 所以,與其說這是命名的規則,倒不如說他是給我們一個幫變數命名的方向,加快我們寫程式的速度,也使我們的程式碼比較乾淨簡潔,容易讓人看得懂,接下來我們就趕快來看看要命名的時候,要注意的細節有哪些?

當我們要給變數名稱的時候,基本的變數命名規則如下:

  1. 變數的第一個字符必須是字母、_(底線)、或是符號 @ 。
  2. 接下來的字符可以是字母、數字。

這邊還要注意的是我們命名的名稱,不能重複,也不能跟C#內建的關鍵字一樣,像是:namespace、using、while 等等...,當我們不小心取到跟關鍵字一樣名稱的時候,怎麼辦呢!? 其實也別太擔心,如果真的取到跟關鍵字一樣的名稱,我們的編譯器會跟你說你的變數名稱用到關鍵字了。

舉一些例子讓大家看看會比較清楚些,底下的命名方式會比較好:

myBigVar
VAR1
_test2

底下的命名方式則是不行的唷:

33BottlesOfMilk
using
It’s-Start

有一點要特別注意:C# 裡面是會區分字母大小寫的。我們以後在撰寫程式的時候,也許會用到許多變數,所以會有很多變數名稱,最好不要取會讓你自己混淆的名稱,例如以下三個,都是不同的變數名稱唷!

MyVariable
MYVARIABLE
myVariable

其實命名的方式一直都有爭議,過往因為每個人所使用的編譯軟體不同,或是每個工程師為變數命名的習慣不同,當一群人要一起完成一個專案的時候,可能就會為了命名名稱而吵到臉紅脖子粗,所以當大家都遵循著同一個規則走的時候,也比較可以避免這種情況發生,而近年來,比較被大家廣為使用的命名方式為 ─ 匈牙利命名法。這個方法是當你在命名的時候,會放型別的其中一個小寫字母當開頭,例如:當我們要宣告一個變數的型別是int,那它的名稱就會命名為 iAge,用這種方式來命名,可以讓我們比較快速的知道這個變數是什麼型別。

如果有看小弟第七篇的初心者朋友一定會想說:型別以後我們可以自訂耶,又不是使用內建的型別,那樣子如果要命名的話,一定會更複雜,該怎麼辦呢?

關於這一點其實不用擔心,我們使用的VS,當我們不知道這個變數名稱是什麼型別的時候,只需要將滑鼠指標停留在這個變數名稱上面,就會跑出一個小視窗告訴我們,這個變數的型別是什麼嘍!! 是不是 "啾感心"!! 而且開發人員當然也會注意到這一點,所以.NET Framework 也有它的命名方針唷!

有兩種命名方式,一種是Pascal 命名法,另一種則是Camel 命名法,底下就來介紹這兩種命名法吧!

Pascal 命名法的大小寫慣例:

識別項的第一個字母和每個隨後串聯單字的第一個字母都是大寫的。

例如:
Age
LastName
WinterOfDiscontent

Camel 命名法的大小寫慣例:

識別項的第一個字母是小寫的,而每個隨後串聯文字的第一個字母是大寫的。

例如:
age
firstName
timeOfDeath

所以為了讓我們的變數名稱不要太過於複雜,遵循這兩種命名方式來命名就OK啦!! 這樣各位初心者朋友對於變數的命名方式,有沒有比較清楚了呢? 在這邊附上MSDN更詳細的解說連結,有興趣了解的朋友可以去看看。

希望資深的前輩們或是跟我一樣剛開始想學習C#的初心者,可以給我一些建議跟鼓勵! 謝謝呀 ~

(本文中相關內容有參閱、引述MSDN)

 

 

 

 


如果這篇文章對您有幫助,請幫我點選「我要推薦」、按個讚、或是幫我推到其他平台;您的鼓勵將會是我繼續努力的一大動力!!

若是有任何指教或是需要討論之處,也不用客氣,請在下面留言給我,我將會儘速回覆~

Share | . . . . . . . . . .