Я учу себя на ходу и являюсь единственным разработчиком в нашей организации. Я начал разбивать конкретные задачи на библиотеки классов, чтобы по мере роста потребностей организации я мог повторно использовать этот код.
Я склонен иметь, например, IMailingThingie и MailingThingie в библиотеке классов, поскольку при добавлении ссылки на библиотеку оба разрешения.
Мне также кажется, что это уменьшает дублирование кода, но привело к некоторым скачкам (например, для учета ежедневных правил MailingThingie и правил Monthly MailingThingie)
Лучше ли представлять в интерфейсе библиотеки только интерфейс и кодировать реализации для каждого проекта отдельно?
Я использую C # dotNet, но, думаю, архитектурное решение на этом уровне не зависит от языка ...
SolutionRoot1
--ClassLibrary
----IMailing
----Mailing
--Project1
----Reference
--Project2
----Reference
или
SolutionRoot1
--ClassLibrary
----IMailing
--Project1
----Reference
----Mailing
--Project2
----Reference
----Mailing