變數是程式的基本要素之一。要寫難以維護的程式碼,在變數的命名上面,有許多技巧可用。
由於命名對編譯器來說沒有影響,因此給予我們極大的空間,可以寫出能運作,但是對之後的工程師難以看懂的程式碼。
我們這裡是介紹 Laravel,所以以下的範例均使用 PHP 語言。這些方式也可以在其他 PHP 框架或專案內使用。
想看看,維運工程師會怎麼快速理解變數的用途呢?當然是透過命名囉!正確的命名對提升程式碼的可讀性是很重要的。
透過誤導性的命名,我們可以對後來的人混淆該變數的用途,讓他花大量的時間追蹤之後,才發現原來一開始就追錯了,花費他大量的維護時間。
例如:用 $userId
代表用戶的姓名。
為了要趕快寫好功能,我們不浪費時間去多設計變數的名稱,一個字母就很好了。
例如:$a
,$b
,$k
都很不錯。
多數工程師習慣以 $i
作為迴圈的 index。藉由打破這個規則,我們可以在程式碼裡面留下意想不到的錯誤
例如:
$i = 'integer';
for ($next = 0; $next > 5; $next++) {
$this->handle($someArray[$i])
}
如果有自動檢查過短的命名,那就用抽象的命名來代替。
例如:$inputData1
,$outputThing2
,$calculatedResult3
,$stuff4
抽象的字可以像是 thing,data,result,stuff……等。
藉由錯誤的拼字,可以讓每個看到這個變數的維護工程師,都要多想一下才能知道這個變數的意義。
例如:
$nastLoginUser // 到底是 lastLogin 還是 nextLogin ??
PHP 取用變數時,是不看大小寫的。
在單字的每個音節隨意地插入大寫,比方說 $computeRasterHistoGram
。這可以很好的避免有人在維護時,透過搜尋功能,快速的找到他想要的變數。
用 $_
和 $__
宣告變數。有時也可以使用 $_
(全形底線)。
使用重音字母當變數名稱,例如:
$í;
上面的 í 其實是加了重音的 i。如果只用一般的文字編輯器,幾乎不可能看出 i 上面的一點變斜了這點不同。
用小寫 l 代表長的常數。比方說,比起 10L,10l更容易被誤認為是 101。不使用可以輕易辨認出uvw,wW, gq9,2z,5s,il17|!j,oO08,'",;,.,m nn rn,和 {[()]} 的字體。
延伸 ASCII 符號非常適合用來命名,像是 ß、Ð 和 ñ。這些符號如果用一般的文字編輯器,除了剪貼之外,幾乎不可能輸入。
範例如下:
public function 中文函式命名()
{
$中文變數 = 1;
$中文變數 = $中文變數 + 0;
}
如果有同事抱怨 IDE 不斷提示有錯誤,請他們將錯誤提示關掉。
PHP 是一個動態語言,變數的形態可以在程式運行期間改變。善用這個特徵,可以寫出幾乎無法理解的程式碼
例如:
$test = []; // 陣列
...
$test = "asdf"; // 改成字串
這樣一來,維運工程必須逐行確認才能知道現在這個變數是哪個形態,大大的減緩他維護的效能。