發(fā)文章
發(fā)文工具
撰寫
網文摘手
文檔
視頻
思維導圖
隨筆
相冊
原創(chuàng)同步助手
其他工具
圖片轉文字
文件清理
AI助手
留言交流
耦合度一、什么是耦合度軟件設計中通常用耦合度和內聚度作為衡量模塊獨立程度的標準。劃分摸塊的一個準則就是高內聚低耦合。 耦合度(Coupling)是對模塊間關聯(lián)程度的度量。耦合的強弱取決與模塊間接口的復雜性、調用模塊的方式以及通過界面?zhèn)魉蛿?shù)據的多少。 模塊間的耦合度是指模塊之間的依賴關系,包括控制關系、調用關系、數(shù)據傳遞關系。模塊間聯(lián)系越多,其耦合性越強,同時表明其獨立性越差。降低模塊間的耦合度能減少模塊間的影響,防止對某一模塊修改所引起的“牽一發(fā)動全身”的水波效應,保證系統(tǒng)設計順利進行。 內聚和耦合密切相關,同其它模塊存在強耦合關系的模塊常意味這弱內聚,強內聚常意味著弱耦合。耦合度就是某模塊(類)與其它模塊(類)之間的關聯(lián)、感知和依賴的程度,是衡量代碼獨立性的一個指標,也是軟件工程設計
及編碼質量評價的一個標準。耦合的強度依賴于以下幾個因素:
(1)一個模塊對另一個模塊的調用;
(2)一個模塊向另一個模塊傳遞的數(shù)據量;
(3)一個模塊施加到另一個模塊的控制的多少;
(4)模塊之間接口的復雜程度。耦合按從強到弱的順序可分為以下幾種類型:a)非直接耦合:兩模塊間沒有直接關系,之間的聯(lián)系完全是通過主模塊的控制和調用來實現(xiàn)的
b)數(shù)據耦合:一個模塊訪問另一模塊,彼此間通過簡單數(shù)據參數(shù)來交換輸入、輸出信息。這里的簡單數(shù)據參數(shù)不同于控制參數(shù)、公共數(shù)據結構或外部變量。
c)標記耦合:如一組模塊通過參數(shù)表傳遞記錄信息,就是標記耦合。這個記錄是某一數(shù)據結構的子結構,不是簡單變量。
d)控制耦合:一個模塊通過傳遞開關、標志、名字等控制信息,明顯的控制選擇另一模塊的功能
e)外部耦合:一組模塊都訪問同一全局簡單變量而不是同一全局數(shù)據結構,而且不是通過參數(shù)傳遞該全局變量的信息
f)公共耦合:一組模塊都訪問同一個公共數(shù)
據環(huán)境。該公共數(shù)據環(huán)境可以是全局數(shù)據結構、共享的通信區(qū)、內存的公共覆蓋區(qū)等。
g)內容耦合:一個模塊直接修改另一個模塊的數(shù)據,或直接轉入另一個模塊
內聚度是指內部各元素之間聯(lián)系的緊密程度,模塊的內聚種類通常可分為7種,按其內聚度從低
到高的次序依此為:偶然內聚、邏輯內聚、瞬時內聚、過程內聚、通信內聚、順序內聚、功能內聚。二、為什么要低耦合了解什么是耦合及耦合的分類后,我想大家對為什么要降低耦合度已經有一定的認識,并且多數(shù)開發(fā)人員也大概嘗盡了高耦合帶來的苦
頭。道理很簡單,耦合度很高的情況下,維護代碼時修改一個地方會牽連到很多地方,如果修改時沒有理清這些耦合關系,那么帶來的后果
可能會是災難性的,特別是對于需求變化較多以及多人協(xié)作開發(fā)維護的項目,修改一個地方會引起本來已經運行穩(wěn)定的模塊錯誤,嚴重時會
導致惡性循環(huán),問題永遠改不完,開發(fā)和測試都在各種問題之間奔波勞累,最后導致項目延期,用戶滿意度降低,成本也增加了,這對用戶
和開發(fā)商影響都是很惡劣的,各種風險也就不言而喻了。為了預防這些問題的發(fā)生,其中一個重要手段就是降低代碼的耦合度。但也不可能有絕對的零耦合,比如基于J2EE編程那就必須和JDK
耦合,而且高耦合也不是一無是處,如果在設計前期預料到某功能后期基本不用修改,那么即使高耦合了也關系不大。但是,在還沒有能力
設計出基本不用修改的代碼前,還得要求以低耦合為標準。那么怎樣才能最大限度地降低耦合度呢?下面介紹降低耦合度的幾種方法。http://www.cnblogs.com/roucheng/三、降低耦合度的方法 1、少使用類的繼承,多用接口隱藏實現(xiàn)的細節(jié)。 java面向對象編程引入接口除了支持多態(tài)外, 隱藏實現(xiàn)細節(jié)也是其中一個目的。 2、模塊的功能化分盡可能的單一,道理也很簡單,功能單一的模塊供其它模塊調用的機會就少。(其實這是高內聚的一種說法,高內聚低
耦合一般同時出現(xiàn),為了限制篇幅,我們將在以后的版期中討論)。 3、遵循一個定義只在一個地方出現(xiàn)。 4、少使用全局變量。 5、類屬性和方法的聲明少用public,多用private關鍵字,6、多用設計模式,比如采用MVC的設計模式就可以降低界面與業(yè)務邏輯的耦合度。7、盡量不用“硬編碼”的方式寫程序,同時也盡量避免直接用SQL語句操作數(shù)據庫。8、最后當然就是避免直接操作或調用其它模塊或類(內容耦合);如果模塊間必須存在耦合,原則上盡量使用數(shù)據耦合,少用控制耦合,
限制公共耦合的范圍,避免使用內容耦合。
內聚: 故名思議,表示內部間聚集、關聯(lián)的長度,那么高內聚就是指要高度的聚集和關聯(lián)。高內聚:類與類之間的關系而定,高,意思是他們之間的關系要簡單,明了,不要有很強的關系,不然,運行起來就會出問題。一個類的運行影響到其他的類。由于高內聚具備魯棒性,可靠性,可重用性,可讀性等優(yōu)點,模塊設計推薦采用高內聚。
這是軟件工程中的概念,是判斷設計好壞的標準,主要是面向OO的設計,主要是看類的內聚性是否高,偶合度是否低
“高內聚,低耦合”,首先要知道一個軟件是由多個子程序組裝而成, 而一個程序由多個模塊(方法)構成!“高內聚,低耦合”主要是闡述的面向對象系統(tǒng)中,各個類需要職責分離的思想。 每一個類完成特定的獨立的功能,這個就是高內聚。耦合就是類之間的互相調用關系,如果耦合很強,互相牽扯調用很多,那么會牽一發(fā)而動全身,不利于維護和擴展。 類之間的設置應該要低耦合,但是每個類應該要高內聚.耦合是類之間相互依賴的尺度.如果每個對象都有引用其它所有的對象,那么就有高耦合,這是不合乎要求的,因為在兩個對象之間,潛在性地流動了太多信息.低耦合是合乎要求的:它意味著對象彼此之間更獨立的工作.低耦合最小化了修改一個類而導致也要修改其它類的"連鎖反應". 內聚是一個類中變量與方法連接強度的尺度.高內聚是值得要的,因為它意味著類可以更好地執(zhí)行一項工作.低內聚是不好的,因為它表明類中的元素之間很少相關.成分之間相互有關聯(lián)的模塊是合乎要求的.每個方法也應該高內聚.大多數(shù)的方法只執(zhí)行一個功能.不要在方法中添加'額外'的指令,這樣會導致方法執(zhí)行更多的函數(shù).
推廣開來說,這個思想并不限于類與類之間的關系。模塊和模塊,子系統(tǒng)之間也都要遵守這個原則,才可以設計出延展性比較強的系統(tǒng)。
來自: 昵稱10504424 > 《工作》
0條評論
發(fā)表
請遵守用戶 評論公約
蛙蛙推薦:《代碼大全》第4-5章讀書筆記 - 蛙蛙池塘 - 博客園
5.3節(jié) 設計構造塊:啟發(fā)式方法。7)保持松散耦合:這點也很重要,書中介紹了衡量耦合性的標準,耦合的種類,如簡單的數(shù)據參數(shù)耦合,簡單對象耦合,對象參數(shù)耦合,語義上的耦合等,其中語義上的耦合是最...
高內聚,低耦合-ZOL博客
對高內聚,低耦合的理解。模塊之間聯(lián)系越緊密,其耦合性就越強,模塊的獨立性則越差,模塊間耦合的高低取決于模塊間接口的復雜性,調用的方式以及傳遞的信息。)2,耦合性是程序結構中各個模塊之間相互關...
談談軟件的可維護性問題
1 表達式、函數(shù)、方法不能過大:易讀的代碼函數(shù)一般都在10-20行左右,不要將多個事情放在一個函數(shù)里完成,時刻要注意一個函數(shù)只完成一件事情,這種設計無論是從代碼重用性(越是功能單一的代碼越容易重...
面向對象更容易產生糟糕的設計
面向對象更容易產生糟糕的設計。許多初學者,在使用面向對象的語言之后,喜歡把設計出的全局變量,封裝在一個對象里面,在定義幾個 接口函數(shù)對這些全局變量訪問,這時全局變量好像消失了??墒侨肿兞?..
高內聚低耦合-軟件工程
高內聚低耦合-軟件工程基本解釋 高內聚低耦合,是軟件工程中的概念,是判斷設計好壞的標準,主要是面向對象的設計,主要是看類的內聚性是否高,耦合度是否低。模塊之間聯(lián)系越緊密,其耦合性就越強,...
轉:代碼的聚合與耦合(一)
轉:代碼的聚合與耦合(一)在軟件開發(fā)過程中經常會見到“高內聚 低耦合”,以前讀書的時候沒什么在意,包括寫代碼從格式,到代碼的復用,到更高級的內聚耦合考慮的都很不周到。高內聚、低耦合的模塊是...
【體系設計】模塊化架構和開放式接口實現(xiàn)高內聚、松耦合和可分割的模塊
【體系設計】模塊化架構和開放式接口實現(xiàn)高內聚、松耦合和可分割的模塊。8)制定和實施推動者與適當?shù)耐顿Y影響所需的文化變革成功的廣泛采用MOSA 9) 創(chuàng)建MOSA系統(tǒng)和接口庫。這些建議的關鍵推動因素包括:...
《軟件設計的哲學》解讀
由于復雜性增量累積的特點,一旦累積了過多的復雜性,其修復成本也將是巨大的,開發(fā)人員妥協(xié)的可能性將更大,進而累積更多的復雜性。復...
軟件工程中的耦合性和解耦合性是什么意思?
軟件工程中的耦合性和解耦合性是什么意思?解耦合就是把必要的耦合理順,同時盡量減少不必要的耦合(這一句其實就是高內聚低耦合的通俗解釋)。這些方法可以說都跟“高內聚低耦合”有關系。合適的名字:...
微信掃碼,在手機上查看選中內容