AngularJS es, a falta de un término mejor, un framework MVC que facilita la creación de aplicaciones SPA (Single Page Application). Los modelos no están tan claramente definidos como en un framework del tipo Backbone.js, pero el patrón arquitectónico es ése.
Cuando se trabaja en un framework MVC, una práctica común es agrupar archivos basándonos en el tipo de archivo:
Plantillas/
Credenciales.html
Comentarios.html
Aplicacion/
Aplicacion.js
Controladores/
ControladorCredenciales.js
ControladorComentarios.js
Directivas/
DirectivaComentarios.js
Servicios/
ServicioCredendiales.js
ServicioComentarios.js
Filtros/
FiltroMayusculas.js
FiltroEmails.js
Esto parece una estructura evidente, en principio. Sin embargo, una vez que la aplicación empieza a escalar, esta disposición provoca que muchas carpetas estén abiertas a la vez. Ya sea utilizando Sublime, Visual Studio o Vim con árbol Nerd, se gasta mucho tiempo desplazándose a través del árbol del directorio. En lugar de mantener los archivos agrupados por tipo, es preferible utilizar grupos de archivos basados en características:
Aplicacion/
Aplicacion.js
Comentarios/
Comentarios.html
ControladorComentarios.js
DirectivaComentarios.js
ServicioComentarios.js
Credenciales/
Credenciales.html
ControladorCredenciales.js
ServicioCredendiales.js
Compartido/
FiltroMayusculas.js
FiltroEmails.js
En esta estructura de directorios es mucho más fácil encontrar los archivos relacionados con una característica particular y eso permitirá acelerar el desarrollo. Algunos puede polemizar sobre la conveniencia de mantener los archivos .html junto a archivos .js, pero el ahorro de tiempo lo compensa.
Como referencia, puedes ver una explicación completa de esta filosofía planteada por el antiguo divulgador de Microsoft, John Papa en el siguiente enlace.
Nota: Autor de la imagen de la cabecera Andrew Michael Nathan. Foto usada bajo licencia Creative Commons.