變數的命名原則
給程式中每一個變數取一個適當的名字是程式設計者的義務責任,
這件事情沒有做好的話,
我私底下拜託你,
在程式被別人看到時別說你是海大資科的。
在基本需求的層面上程式是你和電腦之間溝通的橋樑,
只要你懂、電腦懂就好了,
你要怎麼寫是你自己的事,
可是大部份 "有寫過較大程式經驗"
的軟體設計人員都知道,
如果你的程式內變數的命名毫無章法,
到處都是 x, y, z, i, j, k, o, p, q 的話,
連設計的人自己經過一段時間以後再來看恐怕都看不懂了,
更何況說現在大型的軟體可以是 10 - 100 個人一起合作,
大家需要藉由程式碼溝通呢?
比方說以下面兩段程式來說:
x = 3.56*3.56;
y = 4*20.2;
y = y*12.0;
x = x-y;
if (x >= 0)
{
y = sqrt(x);
x = 2*20.2;
x = (-3.56+y)/x;
}
|
coefA = 20.2;
coefB = 3.56;
coefC = 12;
determinant = coefB*coefB-4.0*coefA*coefC;
if (determinant >= 0)
{
firstRoot = (-coefB+sqrt(determinant))/(2.0*coefA);
secondRoot = (-coefB-sqrt(determinant))/(2.0*coefA);
}
|
你覺得哪一段程式比較容易看懂呢?
編譯器 (Compiler) 的要求:
這是最基本的要求:
-
名稱可以用 abc....., ABC......, 012...9, _ 等等字元,
例如 abA_210、a2b3 等等,
但是不能以數字開頭,
也不能以中文作為變數名稱,
請特別注意在 C 程式中大寫和小寫是不一樣的,
例如:Count 和 count 是兩個不同的變數。
-
變數的字元長度通常有一個限制,
有些 Compiler 是 32 個字元,
Turbo C/C++ 中可以在 Options / Compiler / Source 的
Identifier Length 欄位中設定,
但這不是說你不能用更長的變數,
而是說超過這個長度的字元並沒有區分的功能,例如:
NumberOfStudentsInComputerScienceDept 和
NumberOfStudentsInComputerScienceDepartment
兩個變數個別都是可以接受的變數名稱,
但對於一個以 32 個字元為變數名稱長度限制的 compiler 而言,
這兩個名稱對 compiler 來說所指的是完全一樣的一個變數,
沒有區別。
-
在同一個區塊 (block) 或稱為同一個命名空間 (name space) 中,
不能有兩個變數使用同樣的名字,
否則在程式中使用這個變數時就會發生模稜兩可的狀況了。
(就好像你不會在某一家人裡看到兩個人同名的,
那可能發生的誤會可多了。)
軟體工作人員的自我要求:
-
變數名稱和存放在其內資料的特性要相符,
例如:
有一變數存放現在是西元某某年,
我們可以將它取名為 currentYear
如果你有一個變數要存放民國幾年,
可以取名為 currentROCYear,
如果要存放現在是陰曆什麼年的話可以取名為
currentLunarYear。
-
通常我們保留全部是大寫的名稱作為常數 (或者是常數變數)
例如:PI, NUMBER_OF_DAYS_PER_YEAR...
第一個字母大寫的名稱,例如:
Students,Register,StudentOfTheSchool
常常保留下來作為自定資料型態的名稱。
-
Hungarian Naming Methods
在微軟 (MicroSoft) 的軟體王國裡,
這是一種相當通用的命名法則,
在變數的最前面冠上變數型態的 initial,
例如:
int iNumberOfTeachers;
double dTaxesToPay;
。
-
縮寫:
常常你會覺得每一個字母都要打的話,
變數名稱會變的很長,
連帶使得敘述變得過長,
要好幾列才能寫得完。
所以寫程式時縮寫也是常使用的。
不過既然用的是英文,
請大家縮寫就儘量用英文縮寫的縮寫方法,
一般的通則是:省略
a e i o u 這些母音,
例如:
count 縮寫為 cnt,
best 縮寫為 bst...,
當然也常有人用第一個音節,
例如:
number 縮寫為 num,
distance 縮寫為 dist,
current 縮寫為 cur...