處事力培訓素材(27):Atomic、Cohesion、Coupling

DOEn7.png

這三個結構概念是筆者經常提及的。

Atomic 是指獨存性。獨存性就是零倚賴 Zero Dependency。Atomic 的好處,就是可以獨立處理,無需前提,在結構是一個可以獨立並先處理的部件。

舉例說。電視壞了,遙控器開不到電視,同時不確定插座有沒有電。
這個處境,測試遙控器要靠電視;測試電視要靠插座。而插座本身是獨立的。這個模型,插座便是一個 Atomic 單位;因為是零倚賴 Zero Dependency。可以由插座開始測試;然後才測試電視,然後才測試遙控器。

Cohesion 和 Coupling 都是討論軟件內的模組之間的關係時應用的字眼。
Cohesion 凝聚度就是一個單位(例如一個類 Class 或方法 method / function)它內部的凝聚性。例如一個類的內部是只做一件事,那就是一個高的 cohesion;若做沒有關聯的十件事,就是低的 cohesion。

Coupling 連結度是指單位與單位之間的互相倚賴程度。高 Coupling 就是部件之間很多互相倚賴,差不多是纏在一塊。低 Coupling 就是指各個部件之間就差不多都是獨立自存的。可想而知,Atomic = 100% 時,Coupling = 0%。

舉例說。十個朋友之間,互相的關係繁複:這人是那人的表親戚,另一人又是這人的同學….之間有數十個朋友以外的個人關係,這便是個 high coupling 高連結度。而若十個朋友之間,各自有獨立家庭,沒有在其他場景認識,十個純粹是朋友關係,這便是 low coupling 低連結度。

舉例說。某人讀了三個博士學位,三個博士學位是完全不同的範疇,例如法律、物理、宗教,這便是 Low Cohesion 低凝聚度。而另一人,三個博士學位是接近或差不多的範疇,例如電腦、電子、數學。這便是有較高凝聚度 High Cohesion。高凝聚度代表著專精、更有效的時間分配。

好的系統設計,是:

  1. Atomic 越高越好
  2. Coupling 越低越好
  3. Cohesion 越高越好

這不單是應用在電腦系統上。也包括應用在日常生活事件的管理上。

發表留言