Одним из соображений для этого является то, насколько часто указанные библиотеки используются повторно. Если они, как правило, используются в совершенно разных проектах, вы должны быть осторожны, чтобы не загнать себя в угол, где вы обнаружите, что изменения, которые вы сделали три недели назад в библиотеке для поддержки какого-то нового приложения, оказались критическими изменениями для несколько других приложений.
По сути, я хочу сказать, что вы не хотите сопротивляться искушению вносить изменения в библиотеку волей-неволей; лучше вообще не подвергать себя этому искушению. Если библиотека предназначена для повторного использования, любые существенные изменения в ней должны быть разработаны и реализованы очень тщательно, а также тщательно проверены на соответствие всем зависимым библиотекам/приложениям. Дисциплинированный подход становится значительно труднее, когда перед вами буквально лежит исходный код, ожидающий модификации.
Мой подход заключается в создании решений из связанных библиотек; например, у меня может быть одна сборка для базовых интерфейсов и абстрактных классов, несколько других сборок для разных конкретных реализаций, еще одна для модульных тестов и т.д. Если есть уровни зависимых многократно используемых библиотек, то они часто будут объединены в одно и то же решение.
Но это останавливается на уровне приложения. Любой проект, который не будет всегда развертываться с основными библиотеками, не использует совместное решение, он просто ссылается на скомпилированную DLL. Это заставляет меня быть дисциплинированным в отношении изменений в библиотеке и не начинать ее настройку для поддержки какой-то конкретной функции пользовательского интерфейса.
Я не знаю, является ли это «правильным» подходом, но раньше меня укусили преждевременные изменения в библиотеках без надлежащего тестирования зависимостей, и это всегда было результатом того, что я был слишком сосредоточен на одном приложении и не думал о стороне. -последствия. Я считаю, что когда вы работаете с библиотекой, вам нужно сосредоточиться на самой библиотеке, а не на том, как она используется в конкретном сценарии.
person
Aaronaught
schedule
01.03.2010