重點摘要#

  • 軟體設計師和架構師傾向於追求優雅和完美,但這往往導致過度設計
  • 「Good enough」意味著剩餘的不完美不會以有意義的方式影響系統功能、可維護性或效能
  • 追求完美會導致過度設計和模糊化的解決方案,反而更難維護
  • 應用程式開發不是選美比賽 – 停止尋找缺陷,停止追逐完美

詳細內容#

追求完美的誘惑#

軟體設計師,尤其是架構師,傾向於根據解決方案的優雅和最佳程度來評估它們。就像選美比賽的評審一樣,我們看到一個設計或實作就立刻發現可以透過「再多做幾次改動」或「再重構幾輪」來消除的小缺陷:

  • Domain model 還可以再審視一遍
  • 是否有可以移到基礎類別的共用屬性或函數
  • 多處重複的服務實作需要變成 web service
  • 查詢需要 buffer gets 和 non-unique indexes 的優化

什麼是「Good Enough」#

「Good enough」意味著剩餘的不完美不會以有意義的方式影響系統的功能性、可維護性或效能。架構和設計能夠銜接在一起,實作能夠運作並滿足效能要求,程式碼清晰、簡潔且有良好的文件記錄。

可以更好嗎?當然。但它已經足夠好了,所以停下來,宣告勝利,然後繼續下一個任務。

過度設計的危害#

追求設計和實作的完美,往往導致過度設計和模糊化的解決方案,這些方案最終反而更難維護

本書中許多守則都提醒設計者避免不必要的抽象或複雜性。為什麼我們在保持事物簡單上會有困難?因為我們在追求完美的解決方案!架構師引入複雜性到一個可行的解決方案中,唯一的原因就是為了解決簡單設計中感知到的不完美。

記住,應用程式開發不是選美比賽。停止尋找缺陷,停止追逐完美。瞄準「good enough」,當你達到時就停下來。

— By Greg Nyberg