2016/03/29

品味程式碼【變數篇】

在碼農界待久了,很喜歡品茗各式各樣的程式碼

程式碼有個特色,可能人類一句話可以交待的事,但程式碼可能要用數十列來表達

看各學派命名規則也是很有趣的事,雖然有可能會像魯迅筆下的孔乙己一樣對「茴」字走火入魔,但我仍然是樂此不疲的欣賞著


各家語言對變數宣告的方式不太一樣,以 Delphi 為例,它的特色是把變數和常數進行分區,實際上寫起來大概會像下面表示:
procedure  DoSomething;
var
  ValueStr: String;
  ValueInt: Integer;
begin
...

C# 的宣告方式和 C++ 一樣,在程式進行的過程中可自由宣告,實際寫起來會像下面表示:
static void main() {
  int ValueInt = 0;
  string ValueStr = 'HelloWorld';
}

如何宣告是有學問的,所以出現了以下學派:

  • Pascal(駝峰式)命名法
  • 匈牙利命名法
  • 底線命名法

Pascal(駝峰式)命名法:

由一至多個單字進行命名時,首字大寫,例如:
IsCalling, FirstName, LastName 等

匈牙利命名法:

以為型別或縮寫為變數首碼,例如:
iNum, lYear, szTableName 等

底線命名法:

匈牙利命名法的變型,為了避免自己的命名單字與系統內建的單字混淆
_ValueStr, _ValueInt 或是變化型 LValueStr, LValueInt 等

原以為我學習這些就已經夠用了,但沒想到我最近居然看到以下的命名法

音樂教室命名法:
Ut, Re, Mi, Fa, So, La, Si, Do


字母命名法:
a, b, c, d, e, f, g, h.....w, x, y, z
圖片來源

步步驚心高升命名法:
D1, D2, d3, d4, D5, D6, D7, D8, D9, D10, D11, D12, D13, DXE, DXE2, DXE3, DXE4...(?)

每每看到這些變數命名法,有九成九都是趕鴨子上架的專案,會使用這些命名法的專案,可以想見,當時的戰況是非常慘烈

我現在除了當「碼農」之外,還兼著做「戰後清理」


再轉回去看看現在接手的專案程式碼……有首歌的歌詞是這樣的:

就在心裡畫一個 X (其實是好幾個 X )


良好的命名規則,是程式品質的保證

想知道工程師的能力好壞?命名規則就是一個強而有力的參考準則!

1 則留言:

  1. 變數和欄位的命名可以大幅提高程式和檔案的可讀性

    回覆刪除