Python 是我學的第一個 OOP 語言,雖說號稱 Python 很好讀,但我發現變數命名在 OOP 語言裡很重要(除了 function,還有 class 和 instance),很多變數命名得很隨便的 code 還是會讓人讀得很痛苦。
寫了一陣子 Python 後,我最後是用這種命名方法:
- 只有 class 可以且一律用開頭大寫的 CamelCase,例如
HelpWindow
,MainWindow
- method/attribution/function/argument 一律開頭小寫 camelCase,如
reloadFiles
,applyAndWriteConfigFile
. - instance 一律小寫加底線,例如
button_box
,main_window
,就算只是創建完就丟的 instance(例如 Qt 的layout
或push_button
)也應該要給它有意義的變數。絕對不要偷懶用縮寫寫成像是m = QtGui.QMainWindow()
,這樣鬼知道那個 m 到底是 QMainWindow 還是 list 的 model? 我真的不懂又不是古早年代變數長度有限制,省那幾個字讓 code 更難讀到底是想做什麼…(超常見到這種鬼東西) - 唯一允許變數用縮寫的地方是 iterator,或只有單行的敘述如 lambda function,例如
for i in range(5): ....
。不過我還是常常不縮寫,因為這樣可以讓 code 讀起來更像有意義的英文,比較好懂。
這樣命名很簡單,且一看到 variable 就可以知道這些分別屬於什麼東西。至少目前我發現這樣命名還不錯,讀起來很容易。
不知還有什麼我還不知道的語言特性需要用到變數,有的話會再補上。