Estándar de código
A continuación se muestra el estándar que sigue el repositorio de Frappé. Por favor utilizar esta documentación para hacer revisiones de código, acompañado de la checklist de código.
Convención de nombres.
Folders
Todos los folders dentro del repositorio deberán estar escritos en snake-case, exceptuando los que contengan componentes de React, los cuales deberán estar escritos en PascalCase.
Ejemplos de folders que no son componentes de React: libs
, api-gateway
, category
, find-by-name
.
Ejemplos de folders que son componentes de React: OrderList
, Button
, Card
, AddOrder
.
Archivos
Los archivos deberán estar escritos en camelCase, a excepción de los pertenecientes al folder libs, y archivos de tipo dto, los cuales deberán estar en PascalCase, exceptuando los archivos index.ts
e index.tsx
.
Ejemplos de nombres fuera del folder libs: order.routing.ts
, updateCategoryHandler.ts
.
Ejemplos de nombres dentro del folder libs, dto's y dto's: Product.ts
, CreateOrderCommandHandler.ts
, CreateCategory.dto.ts
.
Clases e interfaces
Todas las clases e interfaces deberán estar escritas en PascalCase.
Ejemplos de nombres de clases e interfaces: CategoryCommandHandler
, UpdateCategoryNameBody
.
Variables y arrow functions
Todas las variables y arrow functions deberán estar escritas en camelCase, exceptuando componentes funcionales de React. Los nombres deberán ser representativos de la función que cumplen.
Ejemplos de nombres de variables y arrow functions: orderRepository
, Button
, listCategoriesHandler
.
Tipos
Los tipos deberán ser nombrados en PascalCase, donde la primera palabra es el nombre del modelo perteneciente al dominio.
Ejemplos de nombres de tipos: AccountSignUpCommandPayload
, CategoryProps
.
Modelos
Los modelos deberán nombrarse de acuerdo al contexto y en PascalCase.
Por ejemplo los archivos del modelo de contexto category se llamarán Category
, CategoryId
y CategoryName
.
Sintáxis
Imports
Los imports del mismo módulo deben ser relativos.
Por ejemplo:
import { MongoCriteriaMapper } from "./MongoCriteriaMapper";
Los imports de otros módulos deben ser absolutos.
Por ejemplo:
import { CategoryRepository } from '@frappe/category/domain';
Todos los modelos del caso de uso tienen un método
toPrimitives()
yfromPrimitives()
Los tabs son de 2 espacios.
Todo el código debe estar en inglés.
Comentarios
Todas las funciones deben estar comentadas, explicando de manera concisa el propósito de la misma.
Los comentarios de las funciones deberán seguir el estándar tsdoc. Por ejemplo:
/**
* Creates a new Category @see {@link Category}
* @param id - The id of the category
* @param name - The name of the category
*
* @returns a new Category
*/
async createCategory(id: string, name: string) {
return new Category(id, name);
}
info
En caso de utilizar el tag @see
para hacer referencia a algun otro archivo, linkear el documento con el tag @link
de la forma en que se usa en el ejemplo de arriba.
Variables de entorno y claves de acceso
- El proyecto utiliza archivos .env para el manejo de variables de entorno en modo desarrollo y en producción cuando NO sea posible establecer variables de entorno en el ambiente de producción.
- Para el correcto manejo de estos archivos, favor de referirse a la Guía para sincronizar, respaldar y compartir archivos de configuración y variables de entorno.
- No se deben escribir las claves de acceso en el código, como lo establece la checklist de código.
Autores
- Eric Buitrón López
- Eduardo Andrés Castillo Perera
- Mauricio Alvarez Milán
Bitácora de cambios
Versión 1.0
Se creó el documento
Versión 1.1
Se añadió la sección de Variables de entorno y claves de acceso