Есть ли другие преимущества для слабосвязанного кода помимо TDD?

Когда я делаю TDD, это заставляет меня использовать принцип внедрения зависимостей, и я получаю слабосвязанный код.

Мне сказали, что сложнее понять приложение со слабосвязанным кодом.

Можете ли вы сказать мне, что плюсы и минусы слабосвязанного кода?

6 ответов

Решение

Внедрение зависимостей автоматически не приводит к слабой связи. Я согласен с ответами выше о плюсах слабой связи. Основным преимуществом внедрения зависимостей является то, что он улучшает тестируемость и помогает следовать принципу GoF "Программа-интерфейс", а не "Реализация". Но вы также можете иметь высокую связь с введенными зависимостями.

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

Другим преимуществом является возможность более легкой замены компонентов, когда у вас более одной реализации.

Представьте, что у вас есть система корзины покупок, она обычно хранит и читает из базы данных, это по умолчанию. Но вы можете сделать так, чтобы он использовал бэкэнд, который не так хорош, но работает, когда у вас нет базы данных.

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

Как вы сказали, минусы слабосвязанного кода - повышенная сложность, и ее трудно понять. Обычно не сразу видно, что делает код, когда он слабо связан.

Как уже говорили другие: преимущество в том, что гораздо проще менять другие части кода / модули / объекты / компоненты, когда эти части не зависят друг от друга.

Как и в случае с ОО-проектированием, вы должны сделать компромиссы - для вас важнее иметь высокомодульный код, который легко менять и вставлять? Или важнее иметь легко понятный код, который проще? Вам придется решить это.

Повторное использование, расширяемость и уменьшение побочных эффектов.

Другие вопросы по тегам