Из всех моих чтений и исследований по дизайну/шаблонам/принципам ОО я обнаружил, что общий консенсус заключается в том, что свободная связь (и высокая сплоченность) - это почти всегда лучший дизайн. Я полностью согласен с моим прошлым опытом работы с программным обеспечением.Когда жесткая связь важна или хорошая вещь?
Но предположим, что какая-то конкретная компания-разработчик программного обеспечения (в которой я не работаю) имеет какое-то сомнительно разработанное крупномасштабное программное обеспечение, которое взаимодействует с некоторым оборудованием. Модули (которые я никогда не работал) настолько плотно связаны, и вызовы функций, которые идут на 20+ уровней для управления состояниями. Границы классов никогда четко не определены, а случаи использования плохо придуманы. Хороший разработчик программного обеспечения (а не я) мог бы затронуть эти проблемы, но только отвергнутые более старшими разработчиками, что методы разработки (например, SOLID или TDD) на самом деле не применяются, поскольку программное обеспечение много лет работает с использованием «традиционной» методологии , и уже слишком поздно менять. И самые большие жалобы от клиентов (которые я не знаю, кто они) являются качеством продукта.
Из-за вышеизложенного нереалистичного сценария (я никогда не был исключением), я думал о том, есть ли случаи, когда жесткая связь предпочтительна или даже требуется? Когда есть случаи, когда разработчику необходимо пересекать границы модулей и разделять состояния, увеличивать зависимость и уменьшать возможности тестирования? Каковы некоторые из таких сложных систем, которые потребуют этого? Я не мог придумать хороший случай, поэтому я надеюсь, что некоторые из более опытных мастеров могут мне помочь.
Спасибо. Опять же, я не знаю эту компанию.
Когда разработчикам не хватает знаний или опыта, а менеджерам не хватает терпения или бюджета, жесткая связь неизбежна. – danludwig
Наверное, если вы что-то прототипируете и хотите сделать это быстро, и в любом случае код будет выброшен в дверь. –
Я согласен с прототипами и экспериментальным кодом, или что-то вроде соревнования или hackathon, где скорость разработки является приоритетной. Но если это какой-то серьезный проект, в котором задействованы клиенты, существуют ли конструктивные примеры тесно связанного дизайна, что выгодно? Разумеется, в предположении, что клиент хочет сначала качество, а второй срок. – Nah