Pete Goodliffe
少即是多#
Less is more——這句老生常談有時確實是真理。作者在過去幾週對 codebase 做的最大改進之一,就是移除一大塊程式碼。
團隊遵循 XP 原則開發軟體,包括 YAGNI(You Aren’t Gonna Need It)。但人性使然,他們還是在某些地方未能做到。
問題發現#
作者觀察到產品在執行某些簡單任務時過於緩慢——本應接近即時完成的操作卻拖很久。原因是這些功能被過度實作了——加入了額外的花俏功能,在當初看起來是好主意,但實際上並非必要。
簡化的效果#
透過移除那些多餘的功能,作者:
- 簡化了程式碼
- 提升了產品效能
- 降低了全域程式碼的熵值(entropy)
單元測試也確認移除過程中沒有破壞其他東西——這是一次簡單而令人滿足的經驗。
多餘程式碼從何而來?#
為什麼那些不必要的程式碼會出現?原因幾乎不外乎:
- 寫起來很有趣,程式設計師想寫(提示:寫程式碼是因為它增加價值,而非因為好玩)
- 有人認為未來可能會用到,所以先寫好(提示:這不是 YAGNI。如果現在不需要,現在就不要寫)
- 看起來不是什麼大工程,實作比回去問客戶是否真的需要來得容易(提示:額外的程式碼寫起來更久、維護更難。而且客戶其實很好接近。一小段額外的程式碼會隨時間滾雪球,變成需要大量維護的龐然大物)
- 程式設計師自己發明了未經記錄或討論的額外需求來合理化功能(提示:程式設計師不負責制定系統需求,客戶才是)
回頭看看你現在正在做的工作——這些都是必要的嗎?