1. 程式人生 > >DRY原則和Shy原則

DRY原則和Shy原則

https://blog.csdn.net/haoxing168/article/details/4455340

保障可維護性的主要訣竅是遵循DRY原則和Shy原則。 
在一個系統的整個生命週期裡,理解和改動這類維護工作的比例一般非常之高。為了維護的方便,要儘量將系統劃分為可以獨立理解與改動的模組。這就要在設計的時候注重DRY原則與Shy原則。不過,這兩條原則有一定的衝突,並不總能兼得,於是在追求的時候要重視分寸。

維護者的兩大困擾
有兩種情況會給維護者增添很大的麻煩:一種是為了調整一個效果,要改動無數個地方;一種是隻改動了一個地方,卻影響了很多效果。

在前一種情況下,非常容易出現漏改的問題——因為需要改動的地方太多,有些應該改動的地方沒有改動;在後一種情況下,非常容易出現誤改的情況——因為被影響的效果太多,有些不該改動的地方跟著變了。

無論出現那種情形,都會使得理解和改動設計變得困難。不過,只要在設計的時候秉持一些原則,這兩種事情都可以得到有效的遏制。

DRY原則
DRY是“Don't Repeat Yourself”的縮寫。意思是說,在一個設計裡,對於任何東西,都應該有且只有一個表示,其它的地方都應該引用這一處。這樣需要改動的時候,只需調整這一處,所有的地方就都變更過來了。

運用DRY原則的時候,有一個很微妙的事情是要認真判別兩樣東西是否是一回事。有時候也有“兩樣東西現在碰巧看起來是一樣的,但是並不能保證將來始終都一樣”的情況。這種時候,很可能就有製造一點表面上的重複的必要了。

Shy原則
Shy不是任何東西的縮寫。這裡是取其字面意思,說系統的每個部分都應該害羞一點,不要把只和自己有關的資訊暴露給其它部分,同時也不要毫不客氣的依賴太多的其它部分。這樣一來,日後便可以放心的修改這些沒變暴露的東西,也不用太過擔心自己依賴的東西發生了變化。

運用Shy原則的時候的主要挑戰在於釐清哪些東西適合被做成系統裡的獨立單元。特別是確定獨立單元的大小。

兩條原則的平衡
DRY原則和Shy原則的目標是相同的,都是為了增強系統的可維護性。一個很好的遵循了DRY原則和Shy原則的系統,被稱為具有“正交性”的系統。

DRY原則和Shy原則在某種程度上是不能兼得的:想要一個系統夠DRY,就得儘量把各部分裡相同的東西分離出去放在一起,這難免就會導致很多部分都和分離出來的這些東西存在一些關係,從而不夠Shy;想要一個系統夠Shy,就得努力讓各部分都做得和其它部分沒有什麼曖昧,這難免就會致使每個部分裡面都有一些本來可以共同使用的內容,從而不夠DRY。

但是,實際需要的是能兼顧兩條原則的設計。這就需要追求每條原則的時候都注意保持一定的分寸。