變數的命名原則

給程式中每一個變數取一個適當的名字是程式設計者的義務責任, 這件事情沒有做好的話, 我私底下拜託你, 在程式被別人看到時別說你是海大資科的。

在基本需求的層面上程式是你和電腦之間溝通的橋樑, 只要你懂、電腦懂就好了, 你要怎麼寫是你自己的事, 可是大部份 "有寫過較大程式經驗" 的軟體設計人員都知道, 如果你的程式內變數的命名毫無章法, 到處都是 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) 的要求:

這是最基本的要求:

  1. 名稱可以用 abc....., ABC......, 012...9, _ 等等字元, 例如 abA_210、a2b3 等等, 但是不能以數字開頭, 也不能以中文作為變數名稱, 請特別注意在 C 程式中大寫和小寫是不一樣的, 例如:Count 和 count 是兩個不同的變數。

  2. 變數的字元長度通常有一個限制, 有些 Compiler 是 32 個字元, Turbo C/C++ 中可以在 Options / Compiler / Source 的 Identifier Length 欄位中設定, 但這不是說你不能用更長的變數, 而是說超過這個長度的字元並沒有區分的功能,例如: NumberOfStudentsInComputerScienceDept 和 NumberOfStudentsInComputerScienceDepartment 兩個變數個別都是可以接受的變數名稱, 但對於一個以 32 個字元為變數名稱長度限制的 compiler 而言, 這兩個名稱對 compiler 來說所指的是完全一樣的一個變數, 沒有區別。

  3. 在同一個區塊 (block) 或稱為同一個命名空間 (name space) 中, 不能有兩個變數使用同樣的名字, 否則在程式中使用這個變數時就會發生模稜兩可的狀況了。 (就好像你不會在某一家人裡看到兩個人同名的, 那可能發生的誤會可多了。)

軟體工作人員的自我要求:

  1. 變數名稱和存放在其內資料的特性要相符, 例如: 有一變數存放現在是西元某某年, 我們可以將它取名為 currentYear 如果你有一個變數要存放民國幾年, 可以取名為 currentROCYear, 如果要存放現在是陰曆什麼年的話可以取名為 currentLunarYear。

  2. 通常我們保留全部是大寫的名稱作為常數 (或者是常數變數) 例如:PI, NUMBER_OF_DAYS_PER_YEAR...

    第一個字母大寫的名稱,例如: Students,Register,StudentOfTheSchool 常常保留下來作為自定資料型態的名稱。

  3. Hungarian Naming Methods 在微軟 (MicroSoft) 的軟體王國裡, 這是一種相當通用的命名法則, 在變數的最前面冠上變數型態的 initial, 例如: int iNumberOfTeachers; double dTaxesToPay;

  4. 縮寫

    常常你會覺得每一個字母都要打的話, 變數名稱會變的很長, 連帶使得敘述變得過長, 要好幾列才能寫得完。 所以寫程式時縮寫也是常使用的。 不過既然用的是英文, 請大家縮寫就儘量用英文縮寫的縮寫方法, 一般的通則是:省略 a e i o u 這些母音, 例如: count 縮寫為 cnt, best 縮寫為 bst..., 當然也常有人用第一個音節, 例如: number 縮寫為 num, distance 縮寫為 dist, current 縮寫為 cur...

程式設計課程 首頁
by Pei-yih Ting
E-mail: pyting@cs.ntou.edu.tw