低耦合 高內聚

來源:互聯網
上載者:User

一 什麼是低耦合

耦合度(Coupling)是對模組間關聯程度的度量。耦合的強弱取決與模組間介面的複雜性、調用模組的方式以及通過介面傳送資料的多少。 模組間的耦合度是指模組之間的依賴關係,包括控制關係、調用關係、資料傳遞關係。模組間聯絡越多,其耦合性越強,同時表明其獨立性越差。降低模組間的耦合度能減少模組間的影響,防止對某一模組修改所引起的“牽一髮動全身”的水波效應,保證系統設計順利進行。
內聚和耦合密切相關,同其它模組存在強耦合關係的模組常意味這弱內聚,強內聚常意味著弱耦合。
耦合度就是某模組(類)與其它模組(類)之間的關聯、感知和依賴的程度,是衡量代碼獨立性的一個指標,也是軟體工程設計

及編碼品質評價的一個標準。耦合的強度依賴於以下幾個因素:

(1)一個模組對另一個模組的調用;

(2)一個模組向另一個模組傳遞的資料量;

(3)一個模組施加到另一個模組的控制的多少;

(4)模組之間介面的複雜程度。

下面這些情況會造成類A、B之間的耦合:

a.       A是B的屬性

b.       A調用B的執行個體的方法

c.       A的方法中引用了B,例如B是A方法的傳回值或參數。

d.       A是B的子類,或者A實現了B

耦合按從強到弱的順序可分為以下幾種類型:
a)非直接耦合:兩模組間沒有直接關係,之間的聯絡完全是通過主模組的控制和調用來實現的   

b)資料耦合:一個模組訪問另一模組,彼此間通過簡單資料參數來交換輸入、輸出資訊。這裡的簡單資料參數不同於控制參數、公用資料結構或外部變數。   

c)標記耦合:如一組模組通過參數表傳遞記錄資訊,就是標記耦合。這個記錄是某一資料結構的子結構,不是簡單變數。   

d)控制耦合:一個模組通過傳遞開關、標誌、名字等控制資訊,明顯的控制選擇另一模組的功能   

e)外部耦合:一組模組都訪問同一全域簡單變數而不是同一全域資料結構,而且不是通過參數傳遞該全域變數的資訊   

f)公用耦合:一組模組都訪問同一個公用數

據環境。該公用資料環境可以是全域資料結構、共用的通訊區、記憶體的公用覆蓋區等。   

g)內容耦合:一個模組直接修改另一個模組的資料,或直接轉入另一個模組   

內聚度是指內部各元素之間聯絡的緊密程度,模組的內聚種類通常可分為7種,按其內聚度從低

到高的次序依此為:偶然內聚、邏輯內聚、瞬時內聚、過程內聚、通訊內聚、順序內聚、功能內聚。


二  為什麼要低耦合

耦合度很高的情況下,維護代碼時修改一個地方會牽連到很多地方


三  如何?低耦合

1、少使用類的繼承,多用介面隱藏實現的細節。因為繼承本身就是耦合,一個類的實現必須依賴於另外一個類,如果基類不存在了就不能工作了。 java物件導向編程引入介面除了支援多態外, 隱藏實現細節也是其中一個目的。 
2、模組的功能化分儘可能的單一,道理也很簡單,功能單一的模組供其它模組調用的機會就少。(其實這是高內聚的一種說法,高內聚低耦合一般同時出現,為了限制篇幅,我們將在以後的版期中討論)。 

3、遵循一個定義只在一個地方出現。 
4、少使用全域變數。 
5、類屬性和方法的聲明少用public,多用private關鍵字,
6、多用設計模式,比如採用MVC的設計模式就可以降低介面與商務邏輯的耦合度。
7、盡量不用“寫入程式碼”的方式寫程式,同時也盡量避免直接用SQL語句操作資料庫。
8、最後當然就是避免直接操作或調用其它模組或類(內容耦合);如果模組間必須存在耦合,原則上盡量使用資料耦合,少用控制耦合,

限制公用耦合的範圍,避免使用內容耦合。


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


四 什麼是高內聚

故名思議,表示內部間聚集、關聯的長度,那麼高內聚就是指要高度的聚集和關聯。
高內聚:類與類之間的關係而定,高,意思是他們之間的關係要簡單,明了,不要有很強的關係,不然,運行起來就會出問題。一個類的運行影響到其他的類。


五 高內聚的好處

由於高內聚具備魯棒性,可靠性,可重用性,可讀性等優點,模組設計推薦採用高內聚。


六  如何?高內聚

每一個類完成特定的獨立的功能,這個就是高內聚。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.