Степень связности [зависимости] частей приложения -- что такое, как лучше организовать. Независимость модулей/частей кода систем

Степень/уровень связности -- характеристика взаимозависимости частей системы на разных уровнях абстракции.

Важно то, что сама по себе декомпозиция просто структурирует код (по сути просто )

Чего не может быть

Все от всего независимым быть не может -- иначе оно просто бы не взаимодействовало (не пугайтесь, если не можете достичь этого состояния в вашей системе ;)

К чему лучше стремиться

  • Избегать перекрёстных зависимостей -- т.е. например, нельзя чтобы два класса в своей работе взаимно использовали методы друг друга.
    Нужно что понимать кто на кого опирается, это важно так, как тот, на кого опираются, не зависим от того кто опирается. Взаимная опора не желательна (все не как у людей).
  • Сказанное в предыдущем пункте верно для любых уровней абстракции, не только уровня классов.
  • Зависимость между сущностями должна быть направлена в одну сторону (по типу пирамиды "сверху вниз"):
    • где-то наверху находится условное "ядро", или "менеджер", который и обращается "зависит" от модулей верхнего уровня
    • модули верхнего уровня могут (а могут и нет -- по ситуации, в зависимости от сложности системы) опираться на что-то ниже и т.д.