內(nèi)聚的含義內(nèi)聚指一個(gè)模塊內(nèi)部元素彼此結(jié)合的緊密程度

在面向?qū)ο箢I(lǐng)域,談到“內(nèi)聚”的時(shí)候,模塊的概念遠(yuǎn)遠(yuǎn)不止我們通常所理解的“系統(tǒng)內(nèi)的某個(gè)模塊”這個(gè)范圍,而是可大可小,大到一個(gè)子系統(tǒng),小到一個(gè)函數(shù),你都可以理解為內(nèi)聚里所說的 “模塊”。所以可以用“內(nèi)聚”來判斷一個(gè)函數(shù)設(shè)計(jì)是否合理,一個(gè)類設(shè)計(jì)是否合理,一個(gè)接口設(shè)計(jì)是否合理, 一個(gè)包設(shè)計(jì)是否合理,一個(gè)模塊/子系統(tǒng)設(shè)計(jì)是否合理。

其次:“元素”究竟是什么? 有了前面對“模塊”的深入研究后,元素的含義就比較容易明確了(不同語言稍有不同)。

函數(shù):函數(shù)的元素就是“代碼”

類/接口:類的元素是“函數(shù)、屬性”

:包的元素是“類、接口、全局?jǐn)?shù)據(jù)”等

模塊:模塊的元素是“包、命名空間”等


再次:“結(jié)合”是什么? 英文的原文是“belong”,有“屬于”的意思,翻譯成中文“結(jié)合”,更加貼近中文的理解。但“結(jié)合”本 身這個(gè)詞容易引起誤解。絕大部分人看到“結(jié)合”這個(gè)單詞,想到的肯定是“你中有我、我中有你”這樣 的含義,甚至可能會聯(lián)想到“美女和帥哥”的結(jié)合,抑或“青蛙王子和公主”的結(jié)合這種情況。這樣的理解本身也并沒有錯(cuò),但比較狹隘。 我們以類的設(shè)計(jì)為例:假如一個(gè)類里面的函數(shù)都是只依賴本類其它函數(shù)(當(dāng)然不能循環(huán)調(diào)用啦),那內(nèi)聚性肯定是最好的,因?yàn)椤敖Y(jié)合”得很緊密

判斷一個(gè)模塊(函數(shù)、類、包、子系統(tǒng))“內(nèi)聚性”的高低,最重要的是關(guān)注模塊的元素是否都忠于模塊的職責(zé),簡單來說就是“不要掛羊頭賣狗肉”。

【內(nèi)聚的分類】 

以下各種形式的內(nèi)聚的內(nèi)聚性越來越高

【巧合內(nèi)聚(Coincidental cohesion)】

延伸閱讀

學(xué)習(xí)是年輕人改變自己的最好方式-Java培訓(xùn),做最負(fù)責(zé)任的教育,學(xué)習(xí)改變命運(yùn),軟件學(xué)習(xí),再就業(yè),大學(xué)生如何就業(yè),幫大學(xué)生找到好工作,lphotoshop培訓(xùn),電腦培訓(xùn),電腦維修培訓(xùn),移動軟件開發(fā)培訓(xùn),網(wǎng)站設(shè)計(jì)培訓(xùn),網(wǎng)站建設(shè)培訓(xùn)學(xué)習(xí)是年輕人改變自己的最好方式