主動察看名稱,自問「別人會怎麼解釋這些名稱?」
下面舉2個範例:
Filter()
假設需要撰寫處理資料庫查詢結果的程式:
result = Database.all_object.filter("year <= 2011")
結果會是什麼?
- 所有year <= 2011的物件?
- 所有year 不<= 2011物件?
問題出在filter是個容易誤解的單子,無法判斷是「選取」或是「排除」,如果需要「選取」比較好的是select(),「排除」則是 「exclude」 較為適合。
Clip(text,length)
假設有個函數能剪下段落的內容:
#剪到 text 結尾,並加上 "..."
def Clip(text,length)
...
Clip()可能有2種解讀:
- 從結尾刪除length長度
- 切除尾端,只留下length長度的資料
為了不讓閱讀程式的人有任何懷疑,可以改用更明確名稱Truncate(text,length)
然而,length參數名稱也不合適,改為max_length會更清楚。
還沒完呢,max_length也有多種可能解釋:
假設是「字元數量」,那麼將max_length改為max_char會更加清楚。
Reference
- <<易讀程式之美學-提升程式碼可讀性的簡單法則 >>(The Art of Readable Code)