Python 變數命名

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 的layoutpush_button)也應該要給它有意義的變數。絕對不要偷懶用縮寫寫成像是 m = QtGui.QMainWindow() ,這樣鬼知道那個 m 到底是 QMainWindow 還是 list 的 model? 我真的不懂又不是古早年代變數長度有限制,省那幾個字讓 code 更難讀到底是想做什麼…(超常見到這種鬼東西)
  • 唯一允許變數用縮寫的地方是 iterator,或只有單行的敘述如 lambda function,例如for i in range(5): ....。不過我還是常常不縮寫,因為這樣可以讓 code 讀起來更像有意義的英文,比較好懂。

這樣命名很簡單,且一看到 variable 就可以知道這些分別屬於什麼東西。至少目前我發現這樣命名還不錯,讀起來很容易。

不知還有什麼我還不知道的語言特性需要用到變數,有的話會再補上。