Почему циркулярные ссылки в Visual Studio - плохая практика?
Во-первых, я опишу пример того, как это может произойти с использованием С# в Visual Studio, поскольку VS, как правило, информирует вас, если у вас есть циклическая ссылка и не рекомендуется.
Сначала создается класс Утилиты, основанный только на коде, предоставленном вам Visual Studio и .Net. Затем создается класс E-mail, который зависит от Утилиты. Вместо того, чтобы добавлять оба проекта в одно решение, создается новое решение и добавляется ссылка на Utilities.dll. Затем, спустя некоторое время, кто-то решает, что они хотят, чтобы класс Утилиты отправил электронное письмо и добавил ссылку на Mail.dll. Visual Studio с удовольствием позволит вам это сделать, но теперь источник не будет компилироваться как есть без одного из двоичных файлов.
В моем рабочем месте это стандартная процедура для копирования и вставки двоичных файлов при разработке, а затем только для создания проектов, над которыми вы работаете. Это привело к по крайней мере одной циркулярной ссылке в кодовой базе, которая осталась незамеченной более 3 лет.
Это кажется очень плохой практикой для меня, потому что нет возможности построить проект из источника, не имея вначале DLL. Этот аргумент мало подходит для "практических" людей, с которыми я работаю, поскольку маловероятно, что мы потеряем все копии наших двоичных файлов одновременно. Бинарные файлы не сохраняются в контроле версий в любой момент, что только меня больше беспокоит.
Это похоже на ситуацию, которой следует избегать, но не такую ситуацию, которая представляет какую-либо значительную угрозу. Являются ли круговые ссылки между проектами действительно большими, или я не выдуваю их из пропорции?