C++ 入門指南 - 變數命名規則

程式 (program) 裡識別字 (identifier) 名稱非常多,例如類別 (class) 名稱、物件 (object) 名稱、名稱空間 (namespace) 、區域變數 (local variable) 名稱等等




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


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

using namespace std;

int main(void)
{
    char *string = "There is no spoon.";
    
    cout << endl;
    cout << string << endl;    
    cout << endl << endl;
    
    return 0;
}

/* 《程式語言教學誌》的範例程式
    http://pydoing.blogspot.com/
    檔名:demo2.cpp
    功能:示範 C++ 程式 
    作者:張凱慶
    時間:西元 2012 年 10 月 */


這個例子中我們用 string 當變數 (variable) 名稱,編譯執行都是沒有問題的



但是當我們要用到標準程式庫中的 string 來宣告變數時,這裡就會產生名稱衝突。簡單說, demo2.cpp 的 main() 已經有 string 當區域變數,之後再用任何 string 都是指已經建立的區域變數 string ,而非標準程式庫中的 string 類別,因而造成標準程式庫中的 string 無法使用。


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


基本上變數或識別字命名以簡單、清楚為原則,常見的就是小寫英文單字與小寫英文單字的組合
iter
total
screen
rfind


另外有大寫駝峰型 (upper camel case)
SimpleGame
MyStory
ThreadTestDrive
RunThreads


或小寫駝峰型 (lower camel case)
actionPerformed
setUpNetworking
getField
myField


也可利用底線符號連結每個英文單字
exam_score
test_result
my_file
find_first_of


命名全看個人喜好,或是開發團隊的習慣囉!


記得,每一行程式都要以分號結尾,若是漏打分號的話,編譯器還會中斷編譯,並且提供警告訊息,因為有分號結尾的程式碼,在 C++ 稱之為陳述 (statement) ,簡單的陳述可由運算式 (expression) 組成,接下來我們開始詳細討論運算式與陳述吧!


中英文術語對照
程式program
識別字identifier
類別class
物件object
名稱空間namespace
區域變數local variable
標準程式庫standard library
編譯器compiler
程式庫library
變數variable
大寫駝峰型upper camel case
小寫駝峰型lower camel case
陳述statement
運算式expression


您可以繼續參考
基礎篇


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


參考資料
http://www.cplusplus.com/doc/tutorial/variables/

沒有留言: