Java 入門指南 V2.00 - 單元 4 - 變數命名規則




程式 (program) 裡需要自行定義的識別字 (identifier) 名稱非常多,例如類別 (class) 名稱、屬性 (field) 名稱、方法 (method) 名稱、參數 (parameter) 名稱、區域變數 (local variable) 名稱等等



有些名稱是自行定義的,有些名稱則屬於 Java API 中已經定義好的,例如 Stringargs 等。 Java API 是官方隨編譯器 (compiler) 提供的程式庫 (library) ,大多是類別定義,提供非常多樣的功能,例如資料結構、時間處理、輸入輸出、圖形介面、網路通訊等等,我們可以在需要時引入需要的類別,無須自行開發相同或類似的程式。


我們自行定義的識別字應避免與 API 中的相同,如果我們定義相同的識別字名稱,雖然可以通過編譯,但容易造成混淆,因此應避免,例如以下程式


001// 使用與 API 相同名稱的變數
002public class WrongName {
003   public static void main(String[] args) {
004      String a = "22";
005  
006      System.out.println();
007      System.out.println(a.getClass());
008      System.out.println();
009  
010      // 變數 String 與 API 中的名稱相同
011      Integer String = 22;
012  
013      System.out.println(String.getClass());
014      System.out.println();
015   }
016}
017 
018/* 檔名: WrongName.java
019   作者: Kaiching Chang
020   時間: September, 2014  */

編譯後執行,結果如下



我們在 main() 方法中,使用 String 當類別名稱宣告變數 (variable) ,也用 String 當變數名稱,以 Integer 類別宣告,雖然可以順利編譯執行,然而容易造成混淆,因此我們不建議這樣使用。


事實上,由於 Java 直接支援 Unicode 編碼,因此識別字可以使用任何 Unicode 字元,如


001// 使用中文當類別名稱
002public class 中文類別 {
003   int 中文屬性 = 22;
004  
005   public static void main(String[] args) {
006      中文類別 中文變數 = new 中文類別();
007  
008      System.out.println();
009      System.out.println(中文變數.中文屬性);
010      System.out.println();
011   }
012}
013 
014/* 檔名: 中文類別.java
015   作者: Kaiching Chang
016   時間: September, 2014  */

編譯後執行,如下



但我們不建議這麼做,因為識別字採用中文的話,一來輸入法的中文為全形字元,很多運算子 (operator) 與內建名稱仍是採用鍵盤上直接輸入的英文、數字或符號,這些是半形字元,沒有留意到的話就很容易弄錯,再來大量的已開發模組 (module) 的識別字仍是採英文的命名習慣,所以要與國外接軌的話,自己命名的識別字仍是採用英文字母比較 ok 囉!


習慣上是採用英文二十六的大小寫字母為主,另加上數字、底線符號及金錢符號,如下表


_$
abcdef
ghijkl
mnopqr
stuvwx
yz
ABCDEF
GHIJKL
MNOPQR
STUVWX
YZ
012345
6789

類別以英文大寫字母開頭,若有多個英文單字組成,採取大寫駝峰型 (upper camel case)


   SimpleGame
   MyStory
   ThreadTestDrive
   RunThreads

方法或變數(包括參數、屬性等)以英文小寫字母開頭,若有多個英文單字組成,採取小寫駝峰型 (lower camel case)


   actionPerformed
   setUpNetworking
   getField
   myField

當然,也可以用底線符號連結每個英文單字,這就看個人偏好哩!


有沒有感覺到每一行程式都以分號結尾,若是漏打分號的話,編譯器還會中斷編譯,並且提供警告訊息。分號代表什麼意思呢?有分號結尾的程式碼,在 Java 稱之為陳述 (statement) ,簡單的陳述可由運算式 (expression) 組成,接下來我們繼續討論運算式與陳述吧!


中英文術語對照


程式program
識別字identifier
類別class
屬性field
方法method
參數parameter
區域變數local variable
編譯器compiler
程式庫library
變數variable
運算子operator
模組module
大寫駝峰型upper camel case
小寫駝峰型lower camel case
陳述statement
運算式expression

重點整理


  1. 識別字為程式中自行定義的名稱,自行定義的識別字名稱應該避免與 API 中相同。
  2. 任何 Unicode 字元都可以拿來當 Java 的識別字名稱,習慣上仍是以英文二十六個字母大小寫、數字、金錢符號與底線為主。
  3. 識別字命名大都用有意義的英文單字組合,類別的定義多半採大寫駝峰型,方法或變數多半採小寫駝峰型。
  4. 分號為陳述的結尾,漏打分號會產生編譯錯誤。

問題與討論


  1. 數字可以當作識別字的起始字元嗎?
  2. 為什麼命名變數要用有意義的英文單字?
  3. 大寫駝峰型跟小寫駝峰型的差別在哪裡?為什麼要有不同的命名習慣?

the end

沒有留言: