日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

代碼編程教學(xué)入門 代碼怎么編寫( 三 )


代碼編程教學(xué)入門 代碼怎么編寫


如果一個模塊訪問另一個模塊時,彼此之間是通過數(shù)據(jù)參數(shù)(不是控制參數(shù)、公共數(shù)據(jù)結(jié)構(gòu)或外部變量)來交換輸入、輸出信息的,則稱這種耦合為數(shù)據(jù)耦合,它是較好的耦合形式 。
代碼編程教學(xué)入門 代碼怎么編寫


C. 印記(引用)耦合
代碼編程教學(xué)入門 代碼怎么編寫


當(dāng)模塊之間使用復(fù)合數(shù)據(jù)結(jié)構(gòu)進行通信時,就會發(fā)生印記耦合 。
復(fù)合數(shù)據(jù)結(jié)構(gòu)可以是數(shù)組、類、結(jié)構(gòu)體、聯(lián)合體等的引用,通過復(fù)合數(shù)據(jù)結(jié)構(gòu)在模塊之間傳遞的參數(shù),可能會或不會被接收模塊完全使用 。
代碼編程教學(xué)入門 代碼怎么編寫


印記耦合優(yōu)點:把模塊A的引用一把傳遞給模塊B,模塊B只需要接受少量參數(shù),接口說明簡單 。
印記耦合缺點:
    • 不必要的參數(shù):模塊B可能只使用了模塊A中部分的數(shù)據(jù) 。
    • 模塊B捆綁了模塊A:任何需要用到模塊B的地方,都需要先獲取到模塊A,無法脫離模塊A單獨使用 。
    • 修改可能互相影響:修改模塊A或模塊B,可能導(dǎo)致對方也需要跟著修改,不符合開閉原則 。
印記耦合優(yōu)化:增加入?yún)?shù)類型,進傳入模塊需要的必要數(shù)據(jù),如下:
代碼編程教學(xué)入門 代碼怎么編寫


d. 控制耦合
代碼編程教學(xué)入門 代碼怎么編寫


如果一個模塊通過傳送開關(guān)、標(biāo)志等控制信息,明顯地控制選擇另一模塊的功能,就是控制耦合 。
代碼編程教學(xué)入門 代碼怎么編寫


  • 數(shù)據(jù)耦合和控制耦合的主要區(qū)別:在數(shù)據(jù)耦合中,模塊之間的依賴關(guān)系非常小,而在控制耦合中,模塊之間的依賴關(guān)系很高 。在數(shù)據(jù)耦合中,模塊之間通過傳遞數(shù)據(jù)進行通信,而在控制耦合中,模塊之間通過傳遞模塊的控制信息進行通信 。
  • 控制耦合優(yōu)化:把控制的邏輯放在模塊A之中,或增加模塊C封裝控制邏輯,不然模塊B只做某一件獨立的事情 。
e. 外部耦合
代碼編程教學(xué)入門 代碼怎么編寫


外部耦合,是指多個模塊同時依賴同一個外部因素(IO設(shè)備/文件/協(xié)議/DB等),如上圖所示:
外部耦合與與外部設(shè)備的通信有關(guān),而不是與公共數(shù)據(jù)或數(shù)據(jù)流有關(guān) 。
一個模塊對外部數(shù)據(jù)或通信協(xié)議所做的任何更改都會影響其他模塊,可以通過增加中間模塊隔離外部變化來降低耦合度,如下:
代碼編程教學(xué)入門 代碼怎么編寫


f. 共用耦合
代碼編程教學(xué)入門 代碼怎么編寫


共用耦合是指不同的模塊共享全局數(shù)據(jù)的信息(全局數(shù)據(jù)結(jié)構(gòu)、共享的通信區(qū)、內(nèi)存的公共覆蓋區(qū)) 。
代碼編程教學(xué)入門 代碼怎么編寫


共用耦合的問題:
  1. 較難控制各個模塊對公共數(shù)據(jù)的存取,容易影響模塊的可靠性和適應(yīng)性 。
  2. 使軟件的可維護性變差,若一個模塊修改了共用數(shù)據(jù),則會影響相關(guān)模塊 。
  3. 降低了軟件的可理解性,不容易清楚知道哪些數(shù)據(jù)被哪些模塊所共享,排錯困難 。
g. 內(nèi)容耦合
內(nèi)容耦合在低級語言(匯編)中出現(xiàn),高級語言從設(shè)計上已避免出現(xiàn)內(nèi)容耦合 。
如果發(fā)生下列情形,兩個模塊之間就發(fā)生了內(nèi)容耦合:

推薦閱讀