軟體設計總是會講到, 不要 重覆製造輪子
, 站在巨人的肩膀上
... 等等的話.
製造新的輪子是會造成成本的損耗, 可能又多一個版本需要維護等問題, 但是不製造新的輪子, 也有可能花更高的代價, 才把舊的輪子裝上去.
此篇文章對此問題提出說明, 但是, 是否要重新製造輪子本身就各有優缺點, 所以此文也沒有任何特別的建議或結論, 不過蠻值得深思的.
下述為 軟體設計就是取捨之道
(作者:王建興) 的重點摘錄:
頻繁地重新造輪固然不對,但胎紋都磨平,還勉強上路也有問題。這中間需要一個適當的平衡點,而好的設計者,會考量相關的背景因素,決定這個平衡點究竟要設定在哪裡。
重新造輪意謂生產力的耗費
- 輪子的重新建造,意謂著大量的生產力浪費。
新造組件耗費生產力,卻不見得可以得到好處
- 每個軟體組件,都是經歷了許多專案現實又殘酷的考驗,才能生存下來的。
- 既存的軟體組件,可信賴的品質多半都有一定程度。
越優秀的程式人,越容易落入造輪的地獄
- 人總是持續成長,你的能力和視野,同樣隨著時間的演進,在不斷地進展。或許輪子的確不夠好,但在某個程度上,它是足堪使用的。
堅持不重新造輪,也會引發疊床架屋這類的副作用
- 堅持不重新設計所用軟體組件的想法,又會引發另一個問題,也就是舊有的組件,因為設計可能較為不良的關係,先天缺乏通用性的體質,無法因應新的需要,但你又不願意重新設計。
- 使得你得採取繞路的方式,迂迴地達成目的,把額外的地方加諸在其他的組件,或甚至是你的應用系統之上。最後就是疊床架屋,持續地在不穩固的基礎上,繼續加蓋違章建築。
軟體設計之道就是取捨之道
- 軟體設計之道就是取捨之道。也就是說,不論做什麼設計決策,你都會得到某些東西,同時也會失去某些東西。而這中間的拿捏,端視你所在的情境,以及面對的目標而定。
- 對應到建造輪子的問題上,決定了一個好的平衡點,你就不會太過頻繁地重新建造輪子,但也不會總是使用同樣的輪子。你會決定適當的更新周期、汰換不合時宜的輪子,同時滿足新的需要。你在生產力和其他像是通用性之類的指標之間,取得了一個好的平衡。