В C# вопросы о том, какие типы создавать, какие члены они должны иметь и какие пространства имен должны их содержать, являются вопросами объектно-ориентированного проектирования. Это не те вопросы, которые меня здесь интересуют.
Вместо этого я хочу спросить, как вы храните их в дисковых артефактах. Вот несколько примеров правил:
Поместите все типы сборки в один исходный файл. Один друг, который сделал это, сказал: «Файлы — это архаичный инструмент организации кода; сегодня я использую classview и Collapse to Definitions для просмотра своего кода».
Поместите весь свой код в одну сборку. Упрощает развертывание и управление версиями.
Структура каталогов отражает структуру пространства имен.
Каждое пространство имен получает свою собственную сборку.
Каждый тип идет в своей сборке. (Приведен в качестве крайнего примера.)
Каждый тип получает свой исходный файл.
Каждый участник получает свой собственный файл; каждый тип получает свой собственный каталог. (Приведен в качестве крайнего примера.)