Мне кажется, что разъединение и Ягни - очень взаимодополняющие добродетели. (Я только что заметил ответ Роба, и кажется, что мы находимся на одной странице здесь.) Вопрос в том, какую степень развязки вы должны сделать, и YAGNI - хороший принцип, помогающий определить ответ. (Для тех, кто говорит о модульном тестировании - если вам нужно разъединить, чтобы выполнить ваш модульный тест, то YAGNI явно не применяется.)
Я действительно искренне сомневаюсь в людях, которые говорят, что они "всегда" отделяются. Может быть, они всегда так делают каждый раз, когда думают об этом. Но я никогда не видел программы, где дополнительные слои абстракции не могли бы быть добавлены где-то, и я искренне сомневаюсь, что есть нетривиальный пример такой программы. Каждый где-то проводит черту.
Исходя из моего опыта, я отделил код, а затем никогда не использовал дополнительную гибкость примерно так же часто, как оставлял код связанным, а затем мне пришлось вернуться и изменить его позже. Я не уверен, означает ли это, что я хорошо сбалансирован или одинаково сломлен в обоих направлениях.