Peter Sommerlad
程式碼是唯一的真相來源#
程式的**最終語意(ultimate semantics)**由其執行中的程式碼決定。原始碼是我們最能直接檢視的東西,因此當你閱讀原始碼時,程式的意義應該一目了然。
其他文件都可能不完整或過時:
- 最精確的需求文件也不會包含程式實際行為的完整故事
- 設計文件可能捕捉了計畫中的設計,但缺乏實作的必要細節
- 這些文件可能已經與當前實作失去同步,甚至從未被撰寫過
- 原始碼可能是僅存的參考
註解不等於真相#
你可能會說:「我的註解會告訴你一切。」但請記住:
- 註解不是可執行的程式碼,它們可能和其他文件一樣出錯
- 一直以來有一種傳統認為註解無條件是好事,導致有些程式設計師不加思考地寫大量註解
- 重複程式碼已經表達的內容,或解釋顯而易見的事情,反而是錯誤的方式
- 冗長的註解會佔據螢幕空間,甚至被 IDE 自動隱藏
如果程式碼需要註解來解釋,考慮重構它,讓它不需要註解。如果需要解釋某次變更的原因,請寫在版本控制系統的 check-in message 中,而不是程式碼裡。
如何讓程式碼自己說真話#
- 使用好的命名:選擇能清楚表達意圖的名稱
- 以內聚性為原則組織程式碼:好的命名也因此更容易
- 解耦程式碼:達到正交性(orthogonality)
- 撰寫自動化測試:解釋預期的行為並檢查介面
- 無情地重構:當你學會更簡潔、更好的解法時
- 讓程式碼盡可能簡單易讀
像創作一樣對待程式碼#
把程式碼視為一首詩、一篇散文、或一封重要的信。精心雕琢你的表達,讓它清楚傳達自己在做什麼,即使你已不在場,它仍能傳達你的意圖。記住:有用的程式碼被使用的時間往往比你預期的更長。維護程式設計師會感謝你的。