TGViewer
Катерина | Про Frontend Катерина | Про Frontend @katerina_profrontend · 2.87K subscribers
Post #1552 1.43K
Связность и сцепленность: как написать код, который не боишься менять 🧩

Представьте проект как дом. Комнаты — это модули и компоненты. В хорошем доме каждая комната имеет своё назначение: кухня для готовки, спальня для сна, ванная для гигиены. Если в одной комнате стоит плита, кровать и стиральная машина, жить неудобно — это низкая связность: элементы внутри модуля занимаются разными вещами. 😏

Двери и коридоры — это интерфейсы и API между модулями. Хорошие двери простые и предсказуемые: можно менять содержимое одной комнаты, не затрагивая остальные. Плохие — это отсутствие нормальных дверей, когда приходится ходить «через стену»: любое изменение тянет за собой цепочку правок. Это и есть высокая сцепленность.

Идеальный дом — чёткие комнаты и аккуратные двери. В коде это означает: модуль делает одну задачу и как можно меньше знает о других. Такой код проще тестировать, менять и развивать.

☑️ Запоминаем:

Связность (cohesion) — насколько элементы внутри одного модуля/класса/сервиса заняты общей задачей.
Высокая связность = модуль делает одно дело и делает его хорошо.

Сцепленность (coupling) — насколько модуль зависит от других.
Низкая сцепленность = можно менять модуль без лавины правок в остальной системе.

Идеал: высокая связность + низкая сцепленность.


🧩 В чём основное преимущество?
☑️ Поддержка кода становится дешевле и быстрее;
☑️ Изменения локализуются — меньше побочных эффектов;
☑️ Архитектура остаётся гибкой: можно заменять реализации, не ломая систему;
☑️ И, конечно, тестировать проще — модуль с одной задачей легче мокать и покрывать тестами.

Небольшой пример на картинке выше 👆

И, конечно, хорошая архитектура — это не идеология, а инструмент: она экономит время, упрощает поддержку и делает изменения безопасными. Но всегда могут возникать исключения из правил: иногда нужно пожертвовать чистотой ради срочного решения или прототипа. Важно, чтобы такие компромиссы были осознанными и временными, а не становились привычкой. 😊
  • 👍 17
  • ❤‍🔥 3
  • 🔥 1
More from @katerina_profrontend
  1. Feb 22, 2026Когда height: 100% чуть-чуть поломало вёрстку 🙈 Я делала простую сетку: контейнер display…
  2. Feb 20, 2026Разбираемся с Proxy в JavaScript 👨‍🏫 Proxy — посредник между кодом и объектом. Он перехв…
  3. Feb 17, 2026Compression Streams API — нативный gzip/deflate прямо в браузере 🤔 Недавно снова вспомнил…
  4. Feb 9, 2026Почему бизнес-логику не стоит писать в UI-компонентах 🧐 Часто вижу один и тот же паттерн:…
  5. Feb 6, 2026Как неочевидные импорты превращают проект в клубок зависимостей 😨 На бумаге — простое пра…
  6. Feb 2, 2026«Хочу стиль для p в header, но не хочу повышать специфичность» 😎 Иногда самая тривиальная…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →