Поместите вещи в библиотеки связанных компонентов, если вы идете по этому пути. Однако будьте осторожны, чтобы разделить вещи, просто чтобы разделить вещи. Вы не упомянули, почему «пришло время продвигаться вперед». Какую конкретную выгоду вы ищете? Общая библиотека становится слишком большой? Есть ли куски, которые вы хотите представить внешней организации, не предоставив им весь стек? Является ли развертывание проблемой из-за количества приложений, которые необходимо исправить?
Группировка вещей связанным способом - это хорошее общее правило, но, не зная причины раскола, это все, что вы собираетесь получить. :)
Расширение на новую информацию:
По этой причине я иногда думал, что не могу знать, влияет ли ошибка на эту программу, поскольку я точно не помню, какая часть общей библиотеки используется. Поэтому, если у меня есть много небольших библиотек, может быть легче определить, на какие программы это влияет, чтобы избежать установки ненужных обновлений.
Физическое разделение, вероятно, не очень поможет вам с вышесказанным. Мне кажется, что если «нахождение какой части» является реальной причиной для беспокойства, то в вашей библиотеке вы нарушаете принцип единой ответственности (SRP), вы, вероятно, также не кодируете интерфейсы или не используете модульное тестирование.
Использование пространств имен в сборке дает вам настолько большое разделение, насколько вам необходимо в отношении организации. По моему мнению, причина разбивать вещи на библиотеки классов в первую очередь для того, чтобы делиться, исправлять и скрывать вещи (через внутреннее пространство), которые вы не хотите, чтобы кто-то еще трогал. Конечно, если у вас есть кусочки кода, которые существуют в программе A, но не B, это довольно простой кандидат на разделение.