4
Using Immutable Objects for Persistence in Java (vlkan.com)
IngramChen 積分 3

多了一層 EmployeeDraft ,漸漸的 over-engineering (本來已經很肥了)。

開發時,我們常常會運用一些 pattern/寫法,然後希望可以達到某種效果/目標。但如果它們不是為了 business 的目標而存在,引入時要仔細的思考。因為多一層 abstraction,就多一層複雜度。

像這裡就為了 immutable 這個目標,多了一個 draft 的概念,而且欄位都要多維護一份,算一算維護的成本 Immutable 帶來的好處根本不夠補 (而且他這個例子一般的 database entity,不是什麼 concurrent code)。兩相權衡,我會放棄他的設計。

有一些 design pattern 也是會無故產生很多輔助的 class,最惡名昭彰的就是 J2EE,還有一些 mvvm 的變型也是。另外,如果實行 TDD 的話,也會 不小心的 產生多餘的 abstraction,我雖然是 TDD 的愛好者,但也需要時時 review 自己的 code 是不是做過頭了。

Jacky 積分 1

想起 GoF 的 Eric Gamma 也說過比較讚同 XP 作發,用 Tests 生 design 比較不會做過頭。

Ref: Simple Design1