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

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

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

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

Ответы [ 6 ]

7 голосов
/ 27 мая 2009

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

4 голосов
/ 27 мая 2009

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

3 голосов
/ 27 мая 2009

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

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

2 голосов
/ 27 мая 2009

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

1 голос
/ 27 мая 2009

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

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

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

0 голосов
/ 27 мая 2009

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

...