Я думаю, что одна общая библиотека лучше, чем 3 дубликаты (и 1 протестированная, безусловно, лучше, чем 3 непроверенные). Это потому, что когда вы находите и исправляете проблему, это делает всю область приложения более надежной (а разработка и обслуживание более эффективны ).
Кстати, это не одна из причин (помимо вклада в сообщество), почему наша компания предоставляет наши .NET разделяемые библиотеки для широкой публики как открытый исходный код.
Плюс, меньше кода для записи. Кроме того, вы можете назначить одного разработчика, чтобы обеспечить соблюдение передовых методов разработки для библиотеки и ее использования (т. Е. Через контракты кода, применяемые в модульных тестах внутри потребителей библиотеки). Это улучшает качество и снижает затраты на обслуживание .
Мы храним разделяемые библиотеки в виде двоичных файлов в решении. Это вытекает из логического требования, что любое решение должно быть атомарным и независимым (это исключает ссылки svn: externals).
Совместимость API не является проблемой . Просто позвольте вашему серверу интеграции перестроить и повторно протестировать весь стек продукта (при обновлении всех внутренних ссылок и распространяющихся изменений), и вы всегда будете уверены, что все внутренние API надежны. И кто бы ни ломал API, он должен либо исправить это, либо обновить использование.