高內(nèi)聚低耦合原則.pdf

高內(nèi)聚低耦合原則.pdf

ID:48006998

大小:674.37 KB

頁(yè)數(shù):2頁(yè)

時(shí)間:2019-07-09

高內(nèi)聚低耦合原則.pdf_第1頁(yè)
高內(nèi)聚低耦合原則.pdf_第2頁(yè)
資源描述:

《高內(nèi)聚低耦合原則.pdf》由會(huì)員上傳分享,免費(fèi)在線閱讀,更多相關(guān)內(nèi)容在行業(yè)資料-天天文庫(kù)

1、高內(nèi)聚低耦合原則一、什么是耦合度軟件設(shè)計(jì)中通常用耦合度和內(nèi)聚度作為衡量模塊獨(dú)立程度的標(biāo)準(zhǔn)。劃分摸塊的一個(gè)準(zhǔn)則就是高內(nèi)聚低耦合。耦合度(Coupling)是對(duì)模塊間關(guān)聯(lián)程度的度量。耦合的強(qiáng)弱取決與模塊間接口的復(fù)雜性、調(diào)用模塊的方式以及通過(guò)界面?zhèn)魉蛿?shù)據(jù)的多少。模塊間的耦合度是指模塊之間的依賴關(guān)系,包括控制關(guān)系、調(diào)用關(guān)系、數(shù)據(jù)傳遞關(guān)系。模塊間聯(lián)系越多,其耦合性越強(qiáng),同時(shí)表明其獨(dú)立性越差。降低模塊間的耦合度能減少模塊間的影響,防止對(duì)某一模塊修改所引起的“牽一發(fā)動(dòng)全身”的水波效應(yīng),保證系統(tǒng)設(shè)計(jì)順利進(jìn)行。內(nèi)聚和耦合密切相關(guān),同其它模塊存在強(qiáng)耦合關(guān)系

2、的模塊常意味這弱內(nèi)聚,強(qiáng)內(nèi)聚常意味著弱耦合。耦合度就是某模塊(類)與其它模塊(類)之間的關(guān)聯(lián)、感知和依賴的程度,是衡量代碼獨(dú)立性的一個(gè)指標(biāo),也是軟件工程設(shè)計(jì)及編碼質(zhì)量評(píng)價(jià)的一個(gè)標(biāo)準(zhǔn)。耦合的強(qiáng)度依賴于以下幾個(gè)因素:(1)一個(gè)模塊對(duì)另一個(gè)模塊的調(diào)用;(2)一個(gè)模塊向另一個(gè)模塊傳遞的數(shù)據(jù)量;(3)一個(gè)模塊施加到另一個(gè)模塊的控制的多少;(4)模塊之間接口的復(fù)雜程度。耦合按從強(qiáng)到弱的順序可分為以下幾種類型:a)非直接耦合:兩模塊間沒(méi)有直接關(guān)系,之間的聯(lián)系完全是通過(guò)主模塊的控制和調(diào)用來(lái)實(shí)現(xiàn)的b)數(shù)據(jù)耦合:一個(gè)模塊訪問(wèn)另一模塊,彼此間通過(guò)簡(jiǎn)單數(shù)據(jù)參數(shù)

3、來(lái)交換輸入、輸出信息。這里的簡(jiǎn)單數(shù)據(jù)參數(shù)不同于控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量。c)標(biāo)記耦合:如一組模塊通過(guò)參數(shù)表傳遞記錄信息,就是標(biāo)記耦合。這個(gè)記錄是某一數(shù)據(jù)結(jié)構(gòu)的子結(jié)構(gòu),不是簡(jiǎn)單變量。d)控制耦合:一個(gè)模塊通過(guò)傳遞開(kāi)關(guān)、標(biāo)志、名字等控制信息,明顯的控制選擇另一模塊的功能e)外部耦合:一組模塊都訪問(wèn)同一全局簡(jiǎn)單變量而不是同一全局?jǐn)?shù)據(jù)結(jié)構(gòu),而且不是通過(guò)參數(shù)傳遞該全局變量的信息f)公共耦合:一組模塊都訪問(wèn)同一個(gè)公共數(shù)據(jù)環(huán)境。該公共數(shù)據(jù)環(huán)境可以是全局?jǐn)?shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)等。g)內(nèi)容耦合:一個(gè)模塊直接修改另一個(gè)模塊的數(shù)據(jù),

4、或直接轉(zhuǎn)入另一個(gè)模塊內(nèi)聚度是指內(nèi)部各元素之間聯(lián)系的緊密程度,模塊的內(nèi)聚種類通??煞譃?種,按其內(nèi)聚度從低到高的次序依此為:偶然內(nèi)聚、邏輯內(nèi)聚、瞬時(shí)內(nèi)聚、過(guò)程內(nèi)聚、通信內(nèi)聚、順序內(nèi)聚、功能內(nèi)聚。二、為什么要低耦合了解什么是耦合及耦合的分類后,我想大家對(duì)為什么要降低耦合度已經(jīng)有一定的認(rèn)識(shí),并且多數(shù)開(kāi)發(fā)人員也大概嘗盡了高耦合帶來(lái)的苦頭。道理很簡(jiǎn)單,耦合度很高的情況下,維護(hù)代碼時(shí)修改一個(gè)地方會(huì)牽連到很多地方,如果修改時(shí)沒(méi)有理清這些耦合關(guān)系,那么帶來(lái)的后果可能會(huì)是災(zāi)難性的,特別是對(duì)于需求變化較多以及多人協(xié)作開(kāi)發(fā)維護(hù)的項(xiàng)目,修改一個(gè)地方會(huì)引起本來(lái)已

5、經(jīng)運(yùn)行穩(wěn)定的模塊錯(cuò)誤,嚴(yán)重時(shí)會(huì)導(dǎo)致惡性循環(huán),問(wèn)題永遠(yuǎn)改不完,開(kāi)發(fā)和測(cè)試都在各種問(wèn)題之間奔波勞累,最后導(dǎo)致項(xiàng)目延期,用戶滿意度降低,成本也增加了,這對(duì)用戶和開(kāi)發(fā)商影響都是很惡劣的,各種風(fēng)險(xiǎn)也就不言而喻了。為了預(yù)防這些問(wèn)題的發(fā)生,其中一個(gè)重要手段就是降低代碼的耦合度。但也不可能有絕對(duì)的零耦合,比如基于J2EE編程那就必須和JDK耦合,而且高耦合也不是一無(wú)是處,如果在設(shè)計(jì)前期預(yù)料到某功能后期基本不用修改,那么即使高耦合了也關(guān)系不大。但是,在還沒(méi)有能力設(shè)計(jì)出基本不用修改的代碼前,還得要求以低耦合為標(biāo)準(zhǔn)。那么怎樣才能最大限度地降低耦合度呢?下面介

6、紹降低耦合度的幾種方法。三、降低耦合度的方法1、少使用類的繼承,多用接口隱藏實(shí)現(xiàn)的細(xì)節(jié)。Java面向?qū)ο缶幊桃虢涌诔酥С侄鄳B(tài)外,隱藏實(shí)現(xiàn)細(xì)節(jié)也是其中一1/2個(gè)目的。2、模塊的功能化分盡可能的單一,道理也很簡(jiǎn)單,功能單一的模塊供其它模塊調(diào)用的機(jī)會(huì)就少。(其實(shí)這是高內(nèi)聚的一種說(shuō)法,高內(nèi)聚低耦合一般同時(shí)出現(xiàn),為了限制篇幅,我們將在以后的版期中討論)。3、遵循一個(gè)定義只在一個(gè)地方出現(xiàn)。4、少使用全局變量。5、類屬性和方法的聲明少用public,多用private關(guān)鍵字,6、多用設(shè)計(jì)模式,比如采用MVC的設(shè)計(jì)模式就可以降低界面與業(yè)務(wù)邏輯的耦合

7、度。7、盡量不用“硬編碼”的方式寫程序,同時(shí)也盡量避免直接用SQL語(yǔ)句操作數(shù)據(jù)庫(kù)。8、最后當(dāng)然就是避免直接操作或調(diào)用其它模塊或類(內(nèi)容耦合);如果模塊間必須存在耦合,原則上盡量使用數(shù)據(jù)耦合,少用控制耦合,限制公共耦合的范圍,避免使用內(nèi)容耦合。內(nèi)聚:故名思議,表示內(nèi)部間聚集、關(guān)聯(lián)的長(zhǎng)度,那么高內(nèi)聚就是指要高度的聚集和關(guān)聯(lián)。高內(nèi)聚:類與類之間的關(guān)系而定,高,意思是他們之間的關(guān)系要簡(jiǎn)單,明了,不要有很強(qiáng)的關(guān)系,不然,運(yùn)行起來(lái)就會(huì)出問(wèn)題。一個(gè)類的運(yùn)行影響到其他的類。由于高內(nèi)聚具備魯棒性,可靠性,可重用性,可讀性等優(yōu)點(diǎn),模塊設(shè)計(jì)推薦采用高內(nèi)聚。這

8、是軟件工程中的概念,是判斷設(shè)計(jì)好壞的標(biāo)準(zhǔn),主要是面向OO的設(shè)計(jì),主要是看類的內(nèi)聚性是否高,偶合度是否低“高內(nèi)聚,低耦合”,首先要知道一個(gè)軟件是由多個(gè)子程序組裝而成,而一個(gè)程序由多個(gè)模塊(方法)構(gòu)成!“高內(nèi)聚

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文

此文檔下載收益歸作者所有

當(dāng)前文檔最多預(yù)覽五頁(yè),下載文檔查看全文
溫馨提示:
1. 部分包含數(shù)學(xué)公式或PPT動(dòng)畫的文件,查看預(yù)覽時(shí)可能會(huì)顯示錯(cuò)亂或異常,文件下載后無(wú)此問(wèn)題,請(qǐng)放心下載。
2. 本文檔由用戶上傳,版權(quán)歸屬用戶,天天文庫(kù)負(fù)責(zé)整理代發(fā)布。如果您對(duì)本文檔版權(quán)有爭(zhēng)議請(qǐng)及時(shí)聯(lián)系客服。
3. 下載前請(qǐng)仔細(xì)閱讀文檔內(nèi)容,確認(rèn)文檔內(nèi)容符合您的需求后進(jìn)行下載,若出現(xiàn)內(nèi)容與標(biāo)題不符可向本站投訴處理。
4. 下載文檔時(shí)可能由于網(wǎng)絡(luò)波動(dòng)等原因無(wú)法下載或下載錯(cuò)誤,付費(fèi)完成后未能成功下載的用戶請(qǐng)聯(lián)系客服處理。