Строго типизированный - это хорошо, потому что он предотвращает трудные поиски ошибок, генерируя ошибки времени компиляции, а не ошибки времени выполнения.
Плотно связанный код плох, потому что, когда вы думаете, что «знаете, чего нужно достичь»«Вы часто ошибаетесь или не знаете всего, что вам нужно знать.
то есть вы можете позже узнать, что то, что вы уже сделали, может быть использовано в другой части вашего кода.Тогда, возможно, вы решите тесно связать две разные версии одного и того же кода.Затем вы должны внести небольшое изменение в бизнес-правило и изменить 2 разных набора тесно связанных кодов, и, возможно, вы получите их оба правильно, что в лучшем случае займет у вас вдвое больше времени ... или в худшем случаевы будете вносить ошибку в одну, но не в другую, и некоторое время она останется незамеченной, а затем вы окажетесь в настоящей ситуации.
Или, возможно, ваш бизнес растет намного быстрее, чем вы ожидали,и вам нужно выгрузить некоторые компоненты базы данных в систему балансировки нагрузки, поэтому теперь вам нужно перестроить все, что тесно связано с существующей системой базы данных, чтобы использовать новую систему.
В двух словах, свободныйсцепление делает программное обеспечение, которое намного легче масштабировать, обслуживать и адаптировать к постоянно меняющимся условиям и требованиям.
РЕДАКТИРОВАТЬ: я чувствую, что либо моя интерпретация слабой связи неверна, либо другие читают ееНеправильный путь.Сильная связь со мной - это когда класс ссылается на конкретный экземпляр другого класса.Слабая связь - это когда класс ссылается на интерфейс, который может реализовать другой класс.
Тогда у меня вопрос: почему бы конкретно не вызвать конкретный экземпляр / определение класса?Я сравниваю это с определением типа переменной, которая вам нужна.Я кое-что читал о внедрении зависимостей, и они, кажется, объясняют это тем, что слабая связь улучшает дизайн.
Я не совсем уверен, в чем здесь ваше замешательство.Скажем, например, что у вас есть приложение, которое интенсивно использует базу данных.У вас есть 100 различных частей вашего приложения, которые должны выполнять запросы к базе данных.Теперь вы можете использовать MySQL ++ в 100 разных местах или создать отдельный интерфейс, который вызывает MySQL ++, и ссылаться на этот интерфейс в 100 разных местах.
Теперь ваш клиент говорит, что он хочет использовать SQL Server вместоMySQL.
Какой сценарий, по вашему мнению, будет легче адаптировать?Переписать код в 100 разных местах или переписать код в 1 месте?
Ладно ... теперь вы говорите, что, возможно, переписать его в 100 разных местах не так уж и плохо.
Итак... теперь ваш клиент говорит, что ему нужно использовать MySQL в некоторых местах, SQL Server в других местах и Oracle в других местах.
Что теперь вы делаете?
ВВ слабо связанном мире вы можете иметь 3 отдельных компонента базы данных, которые имеют общий интерфейс с разными реализациями.В тесно связанном мире у вас будет 100 наборов операторов switch с 3 различными уровнями сложности.