Cohesion and Coupling

Cohesion is the indication of the relationship within a class.

Coupling is the indication of the relationships between classes.

Кохезията трябва да е максимално висока, защото тя характеризира колко един клас прави само това, което трябва да прави, т.е. до колко отговаря на Single Responsibility Principle. Ниската кохезия означава, че класът се опитва да е „швейцарско ножче“, или т.н. „God class“.

Coupling-ът между класовете трябва да е минимална, защото тя характеризира до колко те за зависими и до колко промяна в единият може да счупи останлите.

За да има low coupling между класовете, една добра идея е да се правят така, че да се разбира лесно какво правят поотделно, без да се знае много или даже нищо за цялата система.

Трябва да бягаме от това да се опитваме да правим т.н. „God class“ или „Swiss army knife“…

Литература:

https://ducmanhphan.github.io/2019-03-23-Coupling-and-Cohension-in-OOP/

https://stackoverflow.com/questions/3085285/difference-between-cohesion-and-coupling