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