(原創) design reuse比code reuse還重要 (OO)
在OOP,code reuse是大家所追求的,但事實上,在OOD的design reuse更重要。
code reuse基本上分兩種,一種是與domain無關,一種是與domain相關,與domain無關的又分兩種,一種是和功能性有關的,如.NET Framework,.NET Enterprise Library等,一種是和GUI有關的,如MFC,Qt和一些3rd Party的GUI Component,不過這些大都由其他廠商提供了,自己當然也還是能針對系統沒提供的功能另外開發自己的library,以上因為和domain無關,所以code reuse的程度很高。
若和domain相關,除非你是在企業內的MIS部門,專門開發企業內部使用的軟體,否則和domain相關的library很難reuse,更別說專門接案子的ISV了,所以會發現,真正能code reuse的地方其實很有限。
但是design reuse就不同了,儘管面對不同domain,但是卻常常發現很多『類似情境』,若能將這些情境的成功設計經驗加以整理,套用到另外一個domain軟體開發,這就是design reuse,或許說是design experience reuse,如果你夠強,甚至可以『發明』新的design pattern,退而求其次,累積使用design pattern的經驗,什麼時候該用什麼pattern,怎樣用才漂亮,畢竟每個pattern都有trade off,這就是design reuse。重點是無論你開發任何domain軟體,你的design經驗都可以reuse,並不是說code reuse不重要,code reuse也是很重要,但design reuse更重要,但卻常常被人忽略。