Я считаю, что Боб Мартин на самом деле имеет в виду раннее связывание, а не позднее.
Позднее связывание в .NET возможно посредством отражения и, в частности, класса Activator, который позволяет создавать тип во внешней сборке с использованием имени файла или имени сборки.
Обычно, используя директивы (не оператор using), идут рука об руку с прямой ссылкой на внешнюю сборку. то есть. Вы добавляете ссылку на сборку, а затем добавляете директивы using, чтобы избежать необходимости вводить полную иерархию пространства имен при использовании внешних типов.
Так что, если вы обнаружите, что ваш код имеет большое количество директив использования в верхней части, возможно, что вы ссылаетесь на многие другие типы напрямую и, таким образом, увеличиваете связь / зависимость вашего кода от этих типов.
Полагаю, именно поэтому Боб называет их плохими. Ответ на вопрос "это на самом деле плохо?" является очень субъективным и контекстно-зависимым.
В целом расцепление компонентов почти всегда является хорошей целью при разработке программного обеспечения. Это потому, что это позволяет вам изменять части вашей системы с минимальным воздействием на остальную часть системы. Прочитав одну или две книги Боба Мартинса, я ожидал, что это то, к чему он стремится.