筆者認為程式是寫給人看的,不是寫給電腦看的,一個好的程式大致上應該有:
變數的命名規則一向很少探討到,以筆者常年來的經驗所見,常見的變數命名規則大概有幾種:
匈牙利(Hungarian)命名法:
您應該有聽過所謂的「匈牙利命名法」,這是為了紀念微軟的一位傳奇性程式設計師 Charles Simonyi。在 Windows 程式上面您將會大量的看到此種命名法,這種方式是變數名以一個或者多個小寫字母開始,這些字母表示變數的『種類』。如 hInstance 中的h字首表示代碼(Handle),lpszClassName 則是表示長整數的指標指向一個以零結尾的字串(Long Pointer String end by Zero),但是很多人沒搞清楚種類和型別是不同的,所以常會寫出這種程式:
char *pchInput;
像這樣若不參照前後程式碼,吾人無法判斷出這是一個字元指標或是字串指標,也因此許多人就開始批評匈牙利命名法是多此一舉,其實是沒搞清楚匈牙利命名法真正的含義。
匈牙利命名法關聯閱讀:
http://chinesetrad.joelonsoftware.com/Articles/Wrong.html
Programming Windows by Charles Petzold (Microsoft Press)
Writing Solid Code by Steve Maguire (Microsoft Press)
此外,某些資料庫有大小寫相容性的問題,建議只用英文小寫和底線來建立資料表和欄位名稱。
其實變數的命名通則其實是很自由的,要如何做是您自己的選擇,筆者不能保證筆者的見解是最好的,只要您與您的團隊能夠遵循同一個標準就夠了。
- 變數與常數命名規則清楚
- 結構控制良好且容易閱讀
- 註解詳細與文件說明完整
- 錯誤與例外處理完善
- 常數應該是全部大寫,並以底線分字。
- 變數可採用小寫加底線,亦可採用匈牙利命名法之大小寫分字。
- 資料庫表名、欄名應全部寫小寫,並以底線分字。
- 變數應在程式碼開始之前宣告並註解其義。
- 拋棄式變數,如迴圈用的 i,應該在要使用之前宣告。
變數的命名規則一向很少探討到,以筆者常年來的經驗所見,常見的變數命名規則大概有幾種:
- 傳統C和Unix系統上的加底線如:my_char
- C++等物件導向語言興起後的大小寫如:myChar
- 自創規則,如VBB裡的不分大小寫亦不用底線:thisismychar
- 莫名奇妙的編碼,如國內某大軟體公司的資料庫中常見:A1, A2, A3...
Class CMyClass {這是最常見的C++物件宣告寫法,一般我們的物件和成員函式(Member Functions)都會用這種方式,但是資料成員(Data Members)如果還是用同樣的方式來命名,那當我們要使用時,碰到兩者同名就很容易搞混了,所以筆者不贊成對變數使用和成員函式相同的命名規則,而是建議對變數採用傳統加底線方式,對成員函式才使用大小寫,僅管如此,我們還是常見到同時採用兩種作法的程式碼,此外,一般變數應該是名詞,函式應該是動詞加名詞,所以上面那段程式其實是不良的範例,只是為了突顯出同名的可能性而已,這種寫法最早是來自於匈牙利命名法,如果要使用這種變數命名方式,建議同時使用匈牙利命名法以避開可能會產生的錯誤。
public:
int getValue;
void getValue();
private:
// ...statement...
};
匈牙利(Hungarian)命名法:
您應該有聽過所謂的「匈牙利命名法」,這是為了紀念微軟的一位傳奇性程式設計師 Charles Simonyi。在 Windows 程式上面您將會大量的看到此種命名法,這種方式是變數名以一個或者多個小寫字母開始,這些字母表示變數的『種類』。如 hInstance 中的h字首表示代碼(Handle),lpszClassName 則是表示長整數的指標指向一個以零結尾的字串(Long Pointer String end by Zero),但是很多人沒搞清楚種類和型別是不同的,所以常會寫出這種程式:
char *pchInput;
像這樣若不參照前後程式碼,吾人無法判斷出這是一個字元指標或是字串指標,也因此許多人就開始批評匈牙利命名法是多此一舉,其實是沒搞清楚匈牙利命名法真正的含義。
匈牙利命名法關聯閱讀:
http://chinesetrad.joelonsoftware.com/Articles/Wrong.html
Programming Windows by Charles Petzold (Microsoft Press)
Writing Solid Code by Steve Maguire (Microsoft Press)
此外,某些資料庫有大小寫相容性的問題,建議只用英文小寫和底線來建立資料表和欄位名稱。
其實變數的命名通則其實是很自由的,要如何做是您自己的選擇,筆者不能保證筆者的見解是最好的,只要您與您的團隊能夠遵循同一個標準就夠了。
沒有留言:
張貼留言