Nomenclatura para los Servicios de Spin - Mirror Strategy
Se recomienda que se documente el código mediante JavaDocs, en el siguiente link podemos checar como usar JavaDocs con IntelliJ.
Se propone la siguiente nomenclatura para ser implementada en los proyectos de Spin - Mirror Strategy:
Para todo objeto que se cree en los proyectos se deberá de respetar la siguiente nomenclatura:
{{objectType|function}}
. Esto solo aplicaría para funciones/métodos o clases auxiliares que ayuden en el desarrollo, ejemplo:// Donde 'balance' es el dominio y 'Transfer' es el objectType o function public transfer(){}
para el nombrado de variables y/o parámetros, estos deben de tener nombres relacionados al dominio. Se debe de evitar en lo mayor posible dar nombres a variables o parámetros que no sean del dominio o que su significado sea confuso o ambiguo, ejemplo de un nombre incorrecto de una variable:
public class BalanceDTO { // esta propiedad es incorrecta ya que no da significado en el dominio y puede // generar confusión al usarla o invocarla private x; // esta propiedad de igual forma es incorrecta porque no pertenece al // dominio private myVariable; // esta propiedad es correcta ya que puede pertenecer al dominio y da un // significado coherente a su uso private availableCredit; // esta propiedad es incorrecta ya que aunque pertenece al dominio, no es // muy clara su usabilidad o momento de invocación private userAmounts9; }
Nota: se usará camelCase para el nombrado de variables, parámetros, métodos/funciones y/o propiedades. Revisar el
documento de Mejores prácticas de Desarrollo
Nomenclatura para el nombrado de DTOs
Nombre de la clase DTO: El nombre de la clase DTO debe reflejar los datos que contiene. Puedes utilizar un
sustantivo en singular o plural que represente el concepto de los datos transferidos. Por ejemplo, si estás
transfiriendo información de usuarios, puedes llamar a la clase "UserDTO" o "UserDataDTO".
Atributos: Los atributos de la clase DTO deben reflejar los datos que se están transfiriendo. Utiliza nombres
descriptivos que sean claros y concisos. Puedes seguir las convenciones de nomenclatura de Java, como el uso de camelCase
para nombres de variables. Por ejemplo:
public class UserDTO {
private String firstName;
private String lastName;
private String email;
// ...
}
Métodos: Los DTO suelen ser estructuras de datos simples y no tienen mucha lógica asociada. Por lo tanto, no es necesario añadir métodos más allá de los métodos getter y setter para acceder a los atributos. Sin embargo, si se necesita realizar algún procesamiento adicional, puedes agregar métodos apropiados según tus necesidades.
Nomenclatura para el nombrado de URIs
La nomenclatura a utilizar en el nombrado de las URI's serán las siguientes (se validó con Spin):
En el nombrado de las URIs debe ser en plural, no en singular para el manejo de diferentes tipos de recursos.
Ejemplos:
POST - /accounts/blocks
GET - /accounts/balances
Agregar el tema de versionado de las APIs de manera mandatoria en la URL
Ejemplos:
POST - /v1/accounts/blocks
GET - /v1/accounts/balances
Se debe usar camelCase para el nombrado de atributos y parametros
Ejemplos:
GET - /v1/accounts?idUser=11
POST /v1/accounts {"idUser": 11}
Si se tiene más de una palabra en la url, se debería usar el caso spinal-case.
Ejemplos:
POST - /v1/specfic-salaries
Account Mirror
Se podrían modificar lo siguientes endpoint como se muestra a continuación:
/account/details => /v1/accounts/details
/account/block-code => /v1/accounts/blocks
Nota: para la definición de URI's de servicios, se recomienda utilizar lowercase y seguir la nomenclatura de
/{{domain}}/{{subaction ó subobject}}
Balance Mirror
Se podría modificar los siguientes métodos que se enlistan a continuación:
/account/balance => /v1/balances
/account/balance/details => /v1/balances/syncs
/account/FL-balance => /v1/balances/transfers
/account/FL-transferP2P => /v1/balances/transfers-p2p
/account/QRFL-balance => /v1/balance/transfers-qrfl
Nota: Estas son propuestas para dejar más desacopladas las funciones o métodos de un proveedor externo, en caso de que
queramos ganar más claridad en la implementación de los servicios a desarrollar, se propone reutilizar la nomenclatura
que se tiene hoy en día.
Nomenclatura para el resto de Objetos de desarrollo
Para el nombrado de objetos de tipo Repository
o Service
la nomenclatura propuesta es la siguiente:{{Domain}}{{SubAction|SubObject}}Repository.java
o {{Domain}}{{SubAction|SubObject}}Service.java
(se usará UpperCamelCase).
NOTA para
SubAction
oSubObject
se hace referencia a componentes que son parte del dominio, ya sean acciones
que se pueden realizar en el mismos u objetos que forman parte del mismo. EjemploAccountUpdate
donde el dominio esAccount
y el SubAction o SubObject seríaUpdate