耦合與內聚
耦合和內聚是Java(以及所有其他面嚮對象語言)中的兩個概念。耦合度量每個程序模塊對其他程序模塊的依賴程度。內聚性衡量模塊中每個函數的關聯程度。實際上,任何面向對象的語言(包括Java)都有兩個主要目標,即增加內聚性和減少耦合性,以便開發最有效的程序。這兩個軟件工程度量是由Larry C***tantine開發的,目的是降低修改和維護軟件的成本。
什麼是凝聚力?
內聚性衡量程序模塊中每個函數的關聯程度。結構良好的類導致高度內聚的程序。如果某個類正在執行一組高度相關的函數,則該類被稱為具有內聚性。另一方面,如果一個類執行一堆完全無關的功能,這意味著該類根本就沒有內聚性。理解不具有內聚性並不意味著整個應用程序沒有所需的功能,這一點很重要。只是,如果沒有內聚性,就很難管理這些功能,因為隨著時間的推移,應用程序的複雜性不斷增加,它們將分散在許多錯誤的地方。維護、修改和擴展分散在代碼中的行為是非常乏味的,即使對於經驗最豐富的程序員也是如此。
什麼是耦合?
耦合度量每個程序模塊對其他程序模塊的依賴程度。兩個對象之間的交互是因為存在耦合。松耦合程序具有很高的靈活性和可擴展性。強耦合永遠不是好的,因為一個對象可以高度依賴於另一個對象。當代碼被修改時,這是一個噩夢,因為高耦合意味著程序員甚至需要為一個單獨的行為修改而在多個地方編寫代碼。強耦合總是導致程序具有較低的靈活性和較小的可伸縮性/可擴展性。然而,在Java這樣的編程語言中,完全避免耦合是不可能的。但建議程序員盡最大努力減少耦合。還可以使用一些耦合來幫助對象之間進行交互,而不妨礙其可伸縮性和靈活性。
耦合和內聚有什麼區別?