Saltar al contenido principal

EST-DGT-001 Estándar para Nombres de Archivos de Código

v 3.0

Propósito

El objetivo de este documento es establecer un estándar para la nomenclatura de archivos en los proyectos de desarrollo de software que utilizan React Vite y Node con Express en Black Dot. Este estándar busca garantizar la consistencia y claridad en la estructura de los proyectos, facilitando la comprensión y el mantenimiento del código.

Notas introductorias

El correcto nombramiento de archivos es fundamental para la organización y la accesibilidad del código en los entornos de desarrollo, influyendo directamente en la eficiencia del trabajo en equipo y en la gestión de los repositorios de código de la organización.

Estándares

Nomenclatura para Frontend (React Vite)

Componentes: Los nombres de los archivos de componentes deben comenzar con mayúscula y terminar con la extensión .tsx, reflejando el nombre del componente. Ejemplo: AddButton.tsx.

Archivo base: El archivo base de cada directorio debe llamarse index.tsx.

Archivos TypeScript generales: Cualquier otro archivo .ts que no represente un componente debe estar nombrado en minúsculas. Ejemplo: constants.ts.

Nomenclatura para Backend

Estructura general

  1. Los nombres de los archivos deben seguir el formato <modulo>.<capa>.ts, donde:

modulo: Representa el módulo principal al que pertenece el archivo, en minúsculas. Si el nombre del módulo consta de varias palabras, estas deben estar separadas por guiones. Ejemplos: value-object, user-management. capa: Especifica la capa de aplicación del archivo, también en minúsculas. Posibles capas incluyen controller, service, repository, entity. Ejemplo de nombre de archivo en backend: dummy.controller.ts.

  1. Cada módulo del proyecto debe estar organizado en directorios claves que encapsulan diferentes aspectos de la lógica de negocio en la carpeta de src/.:

api/: Definición de rutas y controladores para la API REST.
  controllers/: Contiene controladores para manejar las rutas HTTP.
  routes/: Define las rutas de la aplicación usando Express.
  middleware/: Funciones de middleware para manejar autenticación, errores y otras tareas transversales.

config/: Configuración de la aplicación, como por ejemplo: firebase-admin.config.ts

core/: Lógica de negocio y acceso a datos.
  app/: Capa de aplicación que orquesta la lógica de negocio.
    interfaces/: Define interfaces para implementaciones concretas.
    services/: Contiene servicios que implementan la lógica de negocio.
      __tests__/: Pruebas unitarias para los servicios.

domain/entities/: Define las entidades de dominio de la aplicación.

errors/: Define clases de errores personalizados.
      common/: Define errores comunes para el uso general del proyecto.
  infra/: Capa de infraestructura para interactuar con bases de datos y otros servicios.
    mappers/: Transforma datos entre la base de datos y la lógica de negocio.
    repositories/: Contiene clases de repositorio para acceso a datos.

utils/: Funciones y clases de utilidad que no pertenecen a un módulo específico.
  enums/: Define enums de constantes utilizados en el proyecto.

  1. Controladores

    Los controladores deben seguir el formato <nombre>.controller.ts.
    Ejemplo:


controllers/
| user.controller.ts
| auth.controller.ts

  1. Rutas

Las rutas deben seguir el formato <nombre>.routes.ts.
Ejemplo:


routes/
| user.routes.ts
| auth.routes.ts

  1. Middleware

Los middlewares deben seguir el formato <nombre>.middleware.ts.
Ejemplo:


middleware/
| auth.middleware.ts
| error.middleware.ts

  1. Servicios

Los servicios deben seguir el formato <nombre>.service.ts.
Ejemplo:


services/
| user.service.ts
| auth.service.ts

  1. Repositorios

Los repositorios deben seguir el formato <nombre>.repository.ts.
Ejemplo:


repositories/
| user.repository.ts
| auth.repository.ts

  1. Mappers

Los mappers deben seguir el formato <nombre>.mapper.ts.
Ejemplo:


mappers/
| user.mapper.ts
| auth.mapper.ts

  1. Entidades

Las entidades deben seguir el formato <nombre>.entity.ts.
Ejemplo:


domain/entities/
| user.entity.ts
| auth.entity.ts

  1. Configuración

Los archivos de configuración deben seguir el formato <nombre>.config.ts.
Ejemplo:


config/
| firebase-admin.config.ts

  1. Pruebas Unitarias

Las pruebas unitarias deben seguir el formato <nombre>.service.test.ts.
Ejemplo:


services/**tests**/
| user.service.test.ts
| auth.service.test.ts

  1. Interfaces

Las interfaces deben seguir el formato <nombre>.interface.ts.
Ejemplo:

app/interfaces/
| user.interface.ts
| auth.interface.ts
  1. Errores

Las clases de errores personalizados deben seguir el formato <nombre>.error.ts.
Ejemplo:

errors/
| user.error.ts
| auth.error.ts

Control de cambios

VersiónCambio realizadoAnálisisAutorRevisor(es)Fecha de cambio
v 1.0Creación del estándarN/ADaniel HurtadoPendiente08/04/2024
v 2.0Ajuste de formatoSe modificó el contenido del estándar de acuerdo a la plantilla porque el documento tenía información no requeridasYuna ChungRicardo Fernández23/04/2024
v 3.0Actualización de estándarSe agregó la nomenclatura para backendArturo DíazIan Padrón30/04/2024