Блог о программировании

Слабая связность и сильное зацепление программного кода

 10 июля 2017 г. 0:44

Одно из главных правил разработки программ сводится к тому, чтобы код был слабо связным между собой и в то же время имел сильное зацепление(low coupling, high cohesion). Никогда не нравились эти заумные слова и термины, особенно, когда за ними стоит совершенно простой смысл.

Связность (coupling) - это взаимная зависимость реализации классов между собой, то есть индикатор количества изменений, которые нужно внести в классы при изменении одного класса. Слабая связность означает, что изменения, вносимые в один класс повлекут за собой небольшие изменения в другие классы, то есть упростит рефакторинг кода, при необходимости. Соответственно, слабая связность кода - это благо, и к нему нужно стремиться. Самый простой пример уменьшения связности кода - это не использовать для классов открытые(public) поля, вместо чего следует использовать модификаторы доступа - геттеры и сеттеры. Таким образом, при изменении названия поля внутри класса не понадобится переписывать код где-либо еще.

Все придуманные шаблоны проектирования (design patterns) придуманы именно для того, чтобы снижать связность кода.

Зацепление (cohesion) - это степень общности выполняемых функций конкретного класса. Зацепление должно быть сильным, что в терминах ООП означает, что каждый класс должен быть сфокусирован на решении одной конкретной задачи. Например, у нас есть класс, который хранит информацию о банковском кредите - это круг решаемых задач класса. Если же мы в этом классе добавим метод, выполняющий печать данных, то зацепление будет уменьшено. Соответствует принципу Single Responsibility Principle в SOLID.

Поделиться статьей

Оставить комментарий