Java 入門指南 - 變數命名規則

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




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


我們自行定義的識別字應避免與 API 中的相同,如果我們定義相同的識別字名稱,雖然可以通過編譯,但容易造成混淆,因此應避免,例如以下程式
// 使用與 API 相同名稱的變數
public class WrongName {
    public static void main(String[] args) { 
        String a = "22";
        
        System.out.println();
        System.out.println(a.getClass());
        System.out.println();
        
        // 變數 String 與 API 中 String 類別名稱相同
        Integer String = 22; 
        
        System.out.println(String.getClass());
        System.out.println();
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:WrongName.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2011 年 4 月 */


編譯後執行,結果如下



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


事實上,由於 Java 直接支援 Unicode 編碼,因此識別字可以使用任何 Unicode 字元,如
// 使用中文當類別名稱
public class 中文類別 {
    int 中文屬性 = 22;
    
    public static void main(String[] args) { 
        中文類別 中文變數 = new 中文類別();
        
        System.out.println();
        System.out.println(中文變數.中文屬性);
        System.out.println();
    }
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:中文類別.java
    功能:示範 Java 程式 
    作者:張凱慶
    時間:西元 2011 年 4 月 */


編譯後執行,如下



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


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


類別以英文大寫字母開頭,若有多個英文單字組成,採取大寫駝峰型 (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


您可以繼續參考
基礎篇


相關目錄
回 Java 入門指南
回 Java 教材目錄
回首頁


參考資料
The JavaTM Tutorials: Getting Started
The JavaTM Tutorials: Learning the Java Language
The JavaTM Tutorials: Essential Classes
The Java Language Specification, Third Edition


本文於 2013 年 1 月訂正

沒有留言: