Низкая связность (low coupling) и высокая связность (high cohesion) — это принципы проектирования, направленные на создание легко поддерживаемого, расширяемого и тестируемого кода.
Низкая связность (Low Coupling)
- Означает, что компоненты (классы, модули) минимально зависят друг от друга. Изменения в одном компоненте оказывают минимальное влияние на другие.
- Признаки низкой связности:
- Компоненты взаимодействуют через четко определенные интерфейсы.
- Минимизируется прямое обращение к внутренним деталям других компонентов.
- Изменения в реализации одного компонента не требуют изменений в других.
- Преимущества:
- Упрощается тестирование отдельных компонентов.
- Код становится более гибким и легче расширяемым.
- Снижается риск возникновения ошибок при внесении изменений.
Высокая связность (High Cohesion)
- Означает, что элементы внутри компонента логически связаны между собой и выполняют одну четко определенную задачу. Компонент с высокой связностью сфокусирован на одной ответственности.
- Признаки высокой связности:
- Все методы класса относятся к одной функциональной области.
- Класс не содержит unrelated functionality (несвязанную функциональность).
- Логика, относящаяся к одной задаче, сосредоточена в одном месте.
- Преимущества:
- Код становится более понятным и легко читаемым.
- Упрощается локализация и устранение ошибок.
- Компонент становится более reusable (переиспользуемым).
В идеале, стремиться нужно к низкой связности между компонентами и высокой связности внутри каждого компонента.