Pete Goodliffe

少即是多#

Less is more——這句老生常談有時確實是真理。作者在過去幾週對 codebase 做的最大改進之一,就是移除一大塊程式碼。

團隊遵循 XP 原則開發軟體,包括 YAGNI(You Aren’t Gonna Need It)。但人性使然,他們還是在某些地方未能做到。

問題發現#

作者觀察到產品在執行某些簡單任務時過於緩慢——本應接近即時完成的操作卻拖很久。原因是這些功能被過度實作了——加入了額外的花俏功能,在當初看起來是好主意,但實際上並非必要。

簡化的效果#

透過移除那些多餘的功能,作者:

  • 簡化了程式碼
  • 提升了產品效能
  • 降低了全域程式碼的熵值(entropy)

單元測試也確認移除過程中沒有破壞其他東西——這是一次簡單而令人滿足的經驗。

多餘程式碼從何而來?#

為什麼那些不必要的程式碼會出現?原因幾乎不外乎:

  • 寫起來很有趣,程式設計師想寫(提示:寫程式碼是因為它增加價值,而非因為好玩
  • 有人認為未來可能會用到,所以先寫好(提示:這不是 YAGNI。如果現在不需要,現在就不要寫
  • 看起來不是什麼大工程,實作比回去問客戶是否真的需要來得容易(提示:額外的程式碼寫起來更久、維護更難。而且客戶其實很好接近。一小段額外的程式碼會隨時間滾雪球,變成需要大量維護的龐然大物
  • 程式設計師自己發明了未經記錄或討論的額外需求來合理化功能(提示:程式設計師不負責制定系統需求,客戶才是

回頭看看你現在正在做的工作——這些都是必要的嗎?