高內聚與低耦合的概念說實話,對本人來講每次提起來老是有些模糊,下午看了一些博主的文章,感受清晰了一些,在此記錄一下我的的理解。html
首先感謝幾位老哥的文章,以下:算法
https://blog.csdn.net/qq_39521554/article/details/79489180 函數
http://www.javashuo.com/article/p-pphztnps-hq.html工具
https://blog.csdn.net/kingscoming/article/details/78836229.net
內聚:htm
每一個模塊儘量獨立完成本身的功能,不依賴於模塊外部的代碼。blog
我的理解:接口
關於內聚,本人以爲四個字「單一職責」,無論是方法(函數)、類,仍是自定義的組件。get
好比某個類應該只作它自己作的是,也不該該作過多的事情。好比計算模塊,該模塊應該只是作計算的事情,而不該該與付款模塊發生內容耦合或者說直接耦合之類,方法
說實在點就是在計算模塊中不該該有付款之類的代碼存在,計算就應該只是作計算的事情,反之亦然。
那麼計算模塊中應該有各類類,好比計算加減法的,計算平方的,計算平方根的(舉個例子,可能實際工做中就是一個工具類)
那麼計算加減法的類中就只是計算加減法,包括到方法中去,加法就計算加法。若是要實現一個複雜的計算好比要加,而後計算平法,而後再減的邏輯,應該在主模塊中進行調用。
最終暴露給其餘模塊的接口不影響付款,具體算法是什麼樣的,是計算模塊說了算,付款模塊並不須要關注。
在主模塊中調用計算模塊的接口,而後再調用付款模塊的接口,那麼它們只是有非直接耦合的關係。
耦合:
模塊與模塊之間接口的複雜程度,模塊之間聯繫越複雜耦合度越高,牽一髮而動全身。
我的理解:
內聚有耦合有着千絲萬縷的關係,若是內聚度較高,那麼耦合程度必然會有所下降,反之,內聚度低,耦合度響應的也會出現必定上升,但又不必定是必然的。
好比有一個類同時既有計算又有付款,內聚鬆散,等於2個功能整合爲一個功能。那麼能夠直接把付款類去掉了。
而後主模塊中關於計算付款只要調用這一個類中的函數便可,那麼是否是總體的耦合度下降了?可是犧牲的是內聚性。
總結:
全部本人感受,若是要達到高內聚,那麼在敲代碼以前,勢必要多花一些時間研究模塊的拆分,無論是橫向的仍是縱向的,
以上大多都是我的理解,歡迎拍磚