Encontré algunas preguntas sobre cómo organizar proyectos (espacio de nombres, una clase por archivo, etc.), pero en una nota más específica, ¿cómo organizas "cosas" que son muy estrechamente relacionado?Cómo organizar Interfaces/clases/implementaciones en el proyecto
Por lo general terminan con:
- un interfaz
IMyStuff
- una base (a veces abstracta) de clase que proporciona skeletton básica para esa interfaz:
BaseMyStuff
- clases de implementación
MyStuffWithBellsAndWhistles
,MyStuffWithChocolateFlavours
Parece lógico que estén en el mismo espacio de nombres, pero parece que mis carpetas comienzan a estar un poco abarrotadas si pongo todos estos archivos en la misma carpeta (no es realmente un problema real, pero se siente extraño).
¿Sería correcto definir tanto la interfaz como la clase base en el mismo archivo?
O ¿estaría bien agrupar esas cosas en subcarpetas, pero en el mismo espacio de nombres? de esta manera:
-MyNamespace
|-Interfaces
| -IMyStuff
| -IMyOtherStuff
|-BaseClasses
| -BaseMyStuff
| -BaseMyOtherStuff
|-Implementation
| -MyStuffWithAwesomeBehaviour
| -MyStuffWithGreatUsefulness
| -MyOtherStuffSoNeatYouWillCry
¿Cuáles son las "mejores prácticas" con respecto a este tipo de organización?
esto es un vistazo de lo que uso para organizarme: http://i.stack.imgur.com/M9Rh8.png – balexandre