程式碼中的抽象

紀錄下最近在 Hacker News 上面看到 “Goodbye, Clean Code” 後的一些想法

Abstraction & De-duplication

在寫程式的過程中免不了遇到重複的部份,解決重複唯一的方法就是做抽象:

但是在做抽象的過程也會帶來一些問題:

Wrong abstraction

我覺得要在寫程式的當下意識到抽象是否正確是有點難度的,

If you find yourself passing parameters and adding conditional paths through shared code, the abstraction is incorrect.

錯誤的抽象也會讓人需要花更多力氣來理解、也需要費更多工來修正。

Everything is a Trade-Off

duplication is far cheaper than wrong abstraction The Wrong Abstraction

但是,如果不建立抽象,我們還是得付出代價:

不管怎麼選都要付出代價,我們也只能盡量選代價小的那一邊了。因此,更關鍵的問題可能是「該抽象到什麼程度

Non-conclusion

沒有結論,我覺得替代方案是:

降低寫錯的成本

  • 善用工具:
    • 方便重構的 IDE / Editor
    • 採用容易重構的程式語言
    • 準備好充足的測試

降低寫錯的機會

  • 找人討論
  • 確認好功能需求
  • 寫 prototype 來驗證想法