Я нашел несколько вопросов о том, как организовать проекты (пространство имен, один класс на файл и т. Д.), Но на более конкретном замечании, как вы организуете «вещи», которые очень тесно связаны?
Я обычно получаю:
- интерфейс
IMyStuff
- a базовый (иногда абстрактный) класс , предоставляющий базовый скелет для этого интерфейса:
BaseMyStuff
- классы реализации
MyStuffWithBellsAndWhistles
, MyStuffWithChocolateFlavours
Кажется, имеет смысл, что они должны находиться в одном и том же пространстве имен, но создается впечатление, что мои папки начинают немного перегружаться, если я помещаю все эти файлы в одну папку (на самом деле это не настоящая проблема, но это странно).
Можно ли определить интерфейс и базовый класс в одном файле?
Или можно ли группировать эти вещи в подпапках, но в одном и том же пространстве имен ? как это:
-MyNamespace
|-Interfaces
| -IMyStuff
| -IMyOtherStuff
|-BaseClasses
| -BaseMyStuff
| -BaseMyOtherStuff
|-Implementation
| -MyStuffWithAwesomeBehaviour
| -MyStuffWithGreatUsefulness
| -MyOtherStuffSoNeatYouWillCry
Каковы "лучшие практики" в отношении такого рода организаций?