C# 入門指南

單元 4 - 命名規則與習慣

~~學習進度表~~

C# 官方建議的命名方式為 Pascal 命名法與小寫駝峰型

PascalCasing camelCasing

Pascal 命名法又稱為大寫駝峰型。

簡單講就是只用英文二十六個大小寫字母,如下

abcdef
ghijkl
mnopqr
stuvwx
yz
ABCDEF
GHIJKL
MNOPQR
STUVWX
YZ

然後用數個英文單字組成,每一個英文單字都不採取自訂的縮寫形式,例如

Security
Length
StreamReader
ToString

自訂的縮寫模式像是前綴的英文是 prefix ,自訂縮寫為 pre ,由於有很多以 pre 開頭當字首的英文單字,容易混淆,因此 C# 官方文件建議如果不是已經約定俗成的縮寫,就直接用整個英文單詞。

每一個英文單字之間不能有空格,或是其他的空白符號,空格或空白符號會被當成是識別字的分界,因此如果中間有空格會被當成兩個識別字,造成語法錯誤。

下表整理使用 Pascal 命名法的識別字 (identifier) 種類

識別字例子
命名空間Company
類別StreamReader
介面IEnumerable
方法ToString
屬性Length
欄位Min
列舉FileMode

基本上類別 (class) 建議採用名詞或名詞片語,例如

Random
ArgumentOutOfRangeException
MainWindow
AppCompatActivity

如果是介面 (interface) ,建議在字首加上大寫英文字母 I 做為區別。

方法 (method) 建議採用動詞或動詞片語,例如

CompareTo
New_Button_Click
GetField
WriteLine

屬性 (property) 建議採用名詞、名詞片語或形容詞,並且採肯定語氣,例如

Color
Text
CanSeek
NewButton

參數建議採取小寫駝峰型,例如

e
sender
saveInstanceState
requestCode

其他區域變數 (local variable) 在官方文件中並沒有建議,因此因此採用自己順手、喜歡的就行了。

最後提一點, .NET 允許使用 Unicode 字元命名識別字,包括中文,例如以下用中文取名專案目錄、檔案名稱、命名空間 (namespace) 、類別、變數 (variable) 等

但是要小心,數字或鍵盤上的半形符號有其他的意義,基本上數字不能放在識別字的開頭,其他鍵盤上的半形符號會被當作運算子解讀。

雖說是允許,但是換到 Visual Studio 後, Visual Studio 可能會要求將每個地方的識別字改成官方建議的模式,不然有可能無法建置執行,因此強烈建議多寫程式練習,習慣 C# 官方建議的命名方式,避免開發到下一階段,又要回頭去修改上一階段的識別字囉!

以上各種定義項目都會在後續單元詳細講解,接下來我們先來討論運算式 (expression) 與陳述 (statement) 的部份。

相關教學影片

上一頁 單元 3 - 實值型態與參考
回 C# 入門指南首頁
下一頁 單元 5 - 陳述與運算式
回 C# 教材首頁
回程式語言教材首頁
中英文術語對照
類別class
運算式expression
識別字identifier
介面interface
區域變數local variable
方法method
命名空間namespace
屬性property
陳述statement
參考資料
1. Microsoft Docs - 命名方針
2. Microsoft Docs - 大小寫慣例
3. Microsoft Docs - 一般命名慣例
4. Microsoft Docs - 命名空間的名稱
5. Microsoft Docs - 類別、結構和介面的名稱
6. Microsoft Docs - 類型成員名稱
7. Microsoft Docs - 命名參數
重點整理
1. C# 官方建議的命名方式為 Pascal 命名法與小寫駝峰型, Pascal 命名法又稱為大寫駝峰型,基本上就是只用英文單字組合的命名方式。
2. Pascal 命名法是每個英文單字的首字母都大寫。
3. 小寫駝峰型中,只有第一個英文單字的首字母小寫,其餘單字的首字母都大寫。
4. 使用 Pascal 命名法的識別字有命名空間、類別、介面、方法、屬性、欄位及列舉。
5. 類別建議採用名詞或名詞片語。
6. 方法建議採用動詞或動詞片語。
7. 屬性建議採用名詞、名詞片語或形容詞,並且採肯定語氣。
8. 參數建議採取小寫駝峰型,其他像是區域變數則沒有建議。
問題與討論
1. 為什麼數字不能當變數的起始字元?
2. 為什麼命名識別字要用有意義的英文單字?
3. Pascal 命名法跟小寫駝峰型的差別在哪裡?為什麼大部分識別字要用 Pascal 命名法?
4. 為什麼識別字不能用空格?
練習
1. 建立一個新專案 Exercise0401 ,用數字當變數的起始字元,例如 2m ,觀察執行結果。
2. 建立一個新專案 Exercise0402 ,設計一個變數 apple_num ,然後把 apple_num 中的底線改成空格,觀察執行結果。