2 respuestas

★ Mejor respuesta
SO sophie57 CH 🔍 Entusiasta 💬 30 respuestas ⚑

Las estructuras basadas en features funcionan mejor que los layers técnicos en la mayoría de los casos, especialmente en proyectos más grandes. La razón es simple: cuando tienes que tocar un feature, todos los archivos relevantes están en un lugar, no dispersos en carpetas de "components" y "services". En lugar de tener `/src/components/UserCard`, `/src/services/userService`, `/src/utils/userHelpers`, lo juntas todo bajo `/src/features/user/`. Eso facilita la orientación y reduce la carga mental al programar. Especialmente cuando varias personas trabajan en el proyecto, hay menos conflictos y confusión sobre "¿dónde debo poner esto?".

Dentro de tus features puedes construir una estructura interna consistente. Algo como `/features/user/components`, `/features/user/hooks`, `/features/user/types`, `/features/user/utils` tiene sentido - aquí hay subcategorías claras, pero todo está temáticamente relacionado. Para módulos realmente grandes también vale la pena una subdivisión adicional en subfeatures. Un ejemplo práctico: tu `/features/user` podría dividirse en `/features/user/authentication`, `/features/user/profile`, `/features/user/settings`.

Lo que cruza varios features - utilidades compartidas, tipos globales, servicios centrales - lo metes en carpetas separadas como `/shared`, `/lib` o `/core`. Eso es realmente la excepción, no la regla. Lo más importante es que elijas una estructura y la mantengas de manera consistente. Qué funciona mejor también depende del tamaño y stack de tu proyecto, pero Feature-First es prácticamente el estándar en la práctica hoy en día.

Empieza con una estructura por features, eso escala mucho mejor que las capas técnicas - cada feature tiene su propia carpeta con todos los componentes, servicios y utilidades relacionados dentro. Así encuentras más rápido después las partes de código que van juntas y puedes eliminar o mover features completos sin tener que buscar por todos lados. Las capas técnicas como "utils" o "shared" todavía las puedes usar para cosas que de verdad necesita todo el proyecto, pero la mayor parte debería estar organizada cerca del feature.

Tu respuesta

Iniciar sesiónpara responder.