Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Folder Hell en Typescript

Alan Perez
October 20, 2022

Folder Hell en Typescript

Slides para charla en nerdearla

Alan Perez

October 20, 2022
Tweet

Other Decks in Technology

Transcript

  1. #nerdearla #nerdearla El Folder Hell De una forma simple, es

    la carga de muchos archivos dentro de una carpeta que se identifica con una entidad principal, generalmente, Controllers, Services, Models etc… Esto causa que poder darle seguimiento, mantenimiento y escalabilidad a nuestro desarrollo, sea complicado, incluso catastrófico.
  2. #nerdearla #nerdearla El Folder Hell Este es un problema bastante

    común a la hora de desarrollar software, principalmente cuando pensamos que a futuro no vamos escalar, debido a este pensamiento, generalmente, tendemos a simplificar demasiado la estructura de carpetas principalmente para que el desarrollo se realice más rápido y “fácil de mantener” @speaker
  3. #nerdearla #nerdearla MVC (Model View Controller) Un ejemplo de esto

    es el famoso proyecto en el que usamos el “anti-patrón” conocido como MVC (Model-View-Controller), en donde, generalmente, tenemos encapsulados en una sola carpeta nuestros modelos, controladores y vistas
  4. #nerdearla #nerdearla La sobrecarga Si queremos agregar nuevos controladores/modelos/vistas/servi cios,

    vamos a identificar un problema, la sobrecarga de archivos en las carpetas, y por ende, a complicar el desarrollo.
  5. #nerdearla #nerdearla El problema de encapsular Vamos a tener más

    carga en los controladores, modelos, servicios, etc… Si bien logramos tener una estructura de carpetas muy simple, a la cual a simple vista, podemos darle seguimiento, a futuro, nos empezamos a encontrar con que la carga de estas es muy alta y la búsqueda de archivos se convierte en un caos. @speaker
  6. #nerdearla #nerdearla A tener en cuenta Por más que nuestra

    estructura sea “limpia”, nos vamos a encontrar con fragmentos de nuestro código que van a ser: ◦ Dificil de acceder ◦ Fácil de perder u olvidar ◦ Difícil de categorizar ◦ Carentes de contexto
  7. #nerdearla • Solución. Una correcta estructura de carpetas. • D&C

    (Divide and Conquer). Vamos a dividir nuestra “arquitectura” en módulos con responsabilidades específicas. • El naming-convention. Es importante que para nuestro proyecto definamos una estructura para nombrar correctamente los archivos en base a sus responsabilidades Modularización y más modularización Tips & Tricks @speaker
  8. #nerdearla #nerdearla Solución Una estructura de carpetas que a lo

    largo de la vida del proyecto, incluso a futuro, permita escalar a nivel código de una forma mucho más amena para los desarrolladores. Nunca sabemos cuando va a tocar hacerle mejoras a ese software que desarrollamos hace 5 años, ya que sino, perdemos el/los clientes. @speaker
  9. #nerdearla #nerdearla D&C (Divide & Conquer) Dividir el código en

    módulos, los cuales van a cumplir con responsabilidades específicas, y que van a tener una estructura de carpetas y archivos simple, con una carga baja, y con una fácil lectura y búsqueda. @speaker
  10. #nerdearla #nerdearla Naming-convention Dentro de cada módulo, vamos a tener

    un archivo para cada controlador, modelo, servicio, etc.. Usando un naming convention para los archivos, el cual nos simplifique la búsqueda de en donde podemos llegar a tener un problema. Mis recomendaciones son: • Kebab-case: separamos la entidad del sufijo con un dash (-) ◦ Ej: user-controller, user-model, order-service, algo-funcionalidad • Dot case: separamos la entidad del sufijo con un punto/dot (.) ◦ Ej: user.controller, user.model, order.service, algo.funcionalidad @speaker
  11. #nerdearla #nerdearla Modulos hijos Podemos agregar módulos hijos a nuestros

    módulos padres, y así logrando nuevamente, una estructura de carpetas muy simple, con una carga muy baja, y con una fácil lectura y búsqueda.
  12. #nerdearla #nerdearla Un modulo hijo De ejemplo vamos a tener

    una aplicación que tiene 3 tipos de usuarios • Usuario administrador (con control total del sistema) • Usuario cliente (quien va a realizar una compra en nuestro ecommerce) • Usuario empleado (con capacidad de administrar puntos especificos en el soft) Estos usuarios comparten muy pocas cosas entre sí, pero de forma muy resumida, unos son usuarios externos y otros internos @speaker
  13. #nerdearla #nerdearla Beneficios • Aislar la lógica de negocios •

    Fácil a la hora de escalar • Software eficiente y mantenible • Facil de debuggear • Facilidad a la hora de nuevas implementaciones y/o mejoras • Fácil lectura del código y búsquedas más concretas de archivos • Software más estandarizado @speaker