天天看點

元件建構原則之元件聚合

元件建構原則之元件聚合

首先說一下元件概念,大型軟體系統的建構過程與建築物修建很類似,都是由一個個小元件組成的。是以,如果說SOLID設計原則是用于指導我們如何将磚塊砌成牆與房間,那麼元件建構原則就是用來指導我們如何将這些房間組合房子的。

REP(複用、釋出等同原則)

軟體複用的最小粒度應等同于其釋出的最小粒度。直白地說,就是要複用一段代碼就把它抽成元件。該原則指導我們元件拆分的粒度。

CCP(共同閉包原則)

為了相同目的而同時修改的類,應該放在同一個元件中。CCP 原則是 SRP 原則在元件層面的描述。該原則指導我們元件拆分的粒度。

對大部分應用程式而言,可維護性的重要性遠遠大于可複用性,由同一個原因引起的代碼修改,最好在同一個元件中,如果分散在多個元件中,那麼開發、送出、部署的成本都會上升。

CRP(共同複用原則)

不要強迫一個元件依賴它不需要的東西。CRP 原則是 ISP 原則在元件層面的描述。該原則指導我們元件拆分的粒度。

相信你一定有這種經曆,內建了元件A,但元件A依賴了元件B、C。即使元件B、C 你完全用不到,也不得不內建進來。這是因為你隻用到了元件A的部分能力,元件A中額外的能力帶來了額外的依賴。如果遵循共同複用原則,你需要把A拆分,隻保留你要用的部分。

REP、CCP、CRP 三個原則之間存在彼此競争的關系,REP 和 CCP 是黏合性原則,它們會讓元件變得更大,而 CRP 原則是排除性原則,它會讓元件變小。遵守REP、CCP 而忽略 CRP ,就會依賴了太多沒有用到的元件和類,而這些元件或類的變動會導緻你自己的元件進行太多不必要的釋出;遵守 REP 、CRP 而忽略 CCP,因為元件拆分的太細了,一個需求變更可能要改n個元件,帶來的成本也是巨大的。

優秀的架構師應該能在上述三角形張力區域中定位一個最适合目前研發團隊狀态的位置,例如在項目早期,CCP比REP更重要,随着項目的發展,這個最合适的位置也要不停調整。

***********************************************************************

【如果文字看累了,可b站搜尋“沙皮狗2021”,用聽的方式領略知識的魅力】

傳送門 :https://space.bilibili.com/407643589

【微信公衆号】:沙皮狗2021