Лучшие вопросы
Таймлайн
Чат
Перспективы

Зацепление (программирование)

в программировании Из Википедии, свободной энциклопедии

Remove ads
Remove ads

Зацепление[1] (сцепление, связанность, 'сопряжение[2]; англ. coupling) — способ и степень взаимозависимости между программными модулями[3]; сила взаимосвязей между модулями[4]; мера того, насколько взаимозависимы разные подпрограммы или модули[3].

Сильное зацепление рассматривается как серьёзный недостаток, поскольку затрудняет понимание логики модулей, их модификацию, автономное тестирование, а также переиспользование по отдельности. Например, при изменении требований к одному модулю понадобится модификация также всех зависимых от него. Слабое зацепление, напротив, является признаком хорошо структурированной и хорошо спроектированной системы, и, когда оно комбинируется с сильной связностью, соответствует общим показателям хорошей читаемости и сопровождаемости.

Метрики зацепления и связности были разработаны Ларри Константайном[англ.] — одним из изначальных разработчиков структурного проектирования[5], который был также ранним сторонником таких концепций (см. также SSADM).

Слабое зацепление является одним из шаблонов GRASP Крэйга Лармана[6].

Remove ads

Типы зацепления

Thumb
Связность и зацепление модулей:
a) правильно (слабое зацепление, сильная связность), b) неправильно (сильное зацепление, слабая связность)

Типы зацепления, согласно стандарту ISO/IEC/IEEE 24765, включают:[3]

  • зацепление по общей области (common-environment coupling, common coupling) — два программных модуля совместно используют общую область данных;
  • зацепление по содержимому (content coupling) — некоторые или все программные модули включены в некоторый модуль как составные части;
  • зацепление по управлению (control coupling) — один программный модуль обменивается данными с другим модулем с явной целью повлиять на его последующее выполнение;
  • зацепление по данным (data coupling, input-output coupling) — выходные данные одного программного модуля служат входными данными другого модуля;
  • смешанное зацепление (hybrid coupling) — различные подмножества значений некоторого элемента данных используются в нескольких программных модулях для разных и несвязанных целей;
  • патологическое зацепление (pathological coupling) — один программный модуль зависит от деталей внутренней реализации другого модуля или влияет на них.
Remove ads

Методы уменьшения зацепления

Существуют различные методы уменьшения зацепления (англ. decoupling). Как правило, они описаны в виде шаблонов проектирования. Одним из ключевых методов является инверсия управления, и, в частности, внедрение зависимости.

Снизить зацепление также помогает использование многослойной архитектуры приложений, например Model-View-Controller, Model-View-Presenter, Model-View-ViewModel и т. п.

Remove ads

См. также

Примечания

Loading content...

Литература

Loading content...
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads