耦合度&如何降低耦合度

一、什麼是耦合度

  
耦合度就是某模塊(類)與其它模塊(類)之間的關聯、感知和依賴的程度,是衡量代碼獨立性的一個指標,也是軟件工程設計及編碼質量評價的一個標準。耦合的強度依賴於以下幾個因素:(1)一個模塊對另一個模塊的調用;(2)一個模塊向另一個模塊傳遞的數據量;(3)一個模塊施加到另一個模塊的控制的多少;(4)模塊之間接口的複雜程度。

  耦合按從強到弱的順序可分爲以下幾種類型:
  (1)內容耦合。當一個模塊直接修改或操作另一個模塊的數據,或者直接轉入另一個模塊時,就發生了內容耦合。此時,被修改的模塊完全依賴於修改它的模塊。類與類之間直接調用或繼承關係都是屬於這種耦合。
  (2)公共耦合。兩個及兩個以上的模塊共同引用一個全局數據項就稱爲公共耦合。
  (3)控制耦合。一個模塊在界面上傳遞一個信號(如開關值、標誌量等)控制另一個模塊,接收信號的模塊的動作根據信號值進行調整,稱爲控制耦合。
  (4)標記耦合。模塊間通過參數傳遞複雜的內部數據結構,稱爲標記耦合。此數據結構的變化將使相關的模塊發生變化。
  (5)數據耦合。模塊間通過參數傳遞基本類型的數據,稱爲數據耦合。
  (6)非直接耦合。模塊間沒有信息傳遞時,屬於非直接耦合。

二、爲什麼要低耦合

  瞭解什麼是耦合及耦合的分類後,我想大家對爲什麼要降低耦合度已經有一定的認識,並且多數開發人員也大概嚐盡了高耦合帶來的苦頭。道理很簡單,耦合度很高的情況下,維護代碼時修改一個地方會牽連到很多地方,如果修改時沒有理清這些耦合關係,那麼帶來的後果可能會是災難性的,特別是對於需求變化較多以及多人協作開發維護的項目,修改一個地方會引起本來已經運行穩定的模塊錯誤,嚴重時會導致惡性循環,問題永遠改不完,開發和測試都在各種問題之間奔波勞累,最後導致項目延期,用戶滿意度降低,成本也增加了,這對用戶和開發商影響都是很惡劣的,各種風險也就不言而喻了。

  爲了預防這些問題的發生,其中一個重要手段就是降低代碼的耦合度。但也不可能有絕對的零耦合,比如基於J2EE編程那就必須和JDK耦合,而且高耦合也不是一無是處,如果在設計前期預料到某功能後期基本不用修改,那麼即使高耦合了也關係不大。但是,在還沒有能力設計出基本不用修改的代碼前,還得要求以低耦合爲標準。那麼怎樣才能最大限度地降低耦合度呢?下面介紹降低耦合度的幾種方法。

三、降低耦合度的方法 

  1、少使用類的繼承,多用接口隱藏實現的細節。 java面向對象編程引入接口除了支持多態外, 隱藏實現細節也是其中一個目的。 
  2、模塊的功能化分儘可能的單一,道理也很簡單,功能單一的模塊供其它模塊調用的機會就少。(其實這是高內聚的一種說法,高內聚低耦合一般同時出現,爲了限制篇幅,我們將在以後的版期中討論)。       
  3、遵循一個定義只在一個地方出現。       
  4、少使用全局變量。       
  5、類屬性和方法的聲明少用public,多用private關鍵字,
  6、多用設計模式,比如採用MVC的設計模式就可以降低界面與業務邏輯的耦合度。
  7、儘量不用“硬編碼”的方式寫程序,同時也儘量避免直接用SQL語句操作數據庫。
  8、最後當然就是避免直接操作或調用其它模塊或類(內容耦合);如果模塊間必須存在耦合,原則上儘量使用數據耦合,少用控制耦合,限制公共耦合的範圍,避免使用內容耦合。

關於降低耦合,小編也發現了比較好的一個帖子,可以參考:http://blog.csdn.net/tianyaxingge/article/details/6696114

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章