Convenciones de Nombres para Funciones Booleanas y de Manipulación de Datos en Go

El correcto nombramiento de funciones en Go es fundamental para mantener un código claro, mantenible y expresivo. En este artículo, abordamos las convenciones para funciones booleanas y de manipulación de datos, diferenciando entre funciones de reglas de negocio y funciones que operan directamente sobre la base de datos (como las generadas por gorm-gen
).
📌 Convenciones de Prefijos para Funciones Booleanas en Reglas de Negocio
Estas funciones encapsulan lógica de negocio y dependen de múltiples condiciones más allá del simple estado de la base de datos.
Prefijo | Tipo de Retorno | Orientación | Descripción | Ejemplo en Go |
Is | bool | Registro | Indica si es/está en un estado lógico | IsUserEligibleForUpgrade(userID) |
Has | bool | Registro | Indica si tiene algo en contexto de negocio | HasCustomerLoyaltyDiscount(customerID) |
Can | bool | Registro | Indica si un recurso puede realizar una acción | CanUserBuy(userID) |
Should | bool | Registro | Indica si algo debería ocurrir según reglas | ShouldSendReminderEmail(orderID) |
Does | bool | Registro | Indica si hace/contiene algo dentro del negocio | DoesOrderHavePendingPayments(orderID) |
Needs | bool | Registro | Indica si necesita algo basado en lógica | NeedsCustomerVerification(userID) |
May | bool | Registro | Indica si podría pasar dependiendo de condiciones | MayCustomerReceivePromoEmail(customerID) |
Must | bool | Registro | Indica si una acción es obligatoria | MustResetPassword(userID) |
Would | bool | Registro | Indica si algo pasaría bajo condiciones específicas | WouldOrderBeDelayed(orderID) |
Was | bool | Registro | Indica si algo ocurrió en el pasado en contexto de negocio | WasUserPreviouslySuspended(userID) |
Did | bool | Registro | Indica si hizo algo en el pasado con impacto en negocio | DidCustomerCompleteFirstPurchase(customerID) |
📌 Convenciones de Prefijos para Funciones de Obtención y Manipulación de Datos en Go (según GORM-GEN)
Estas funciones operan directamente sobre la base de datos y son generadas automáticamente por gorm-gen
.
Prefijo | Tipo de Retorno | Orientación | Descripción | Ejemplo en GORM-GEN |
GetByID | struct | Registro | Obtiene un único recurso por ID | userDAO.GetByID(ctx, id) |
FindBy | struct | Registro | Busca un recurso por un campo específico | customerDAO.FindByEmail(ctx, email) |
ListBy | slice | Colección | Lista múltiples recursos filtrados | orderDAO.ListByCustomerID(ctx, id) |
QueryBy | slice | Colección | Ejecuta una consulta con múltiples filtros | productDAO.QueryByCategory(ctx, category) |
Create | struct | Registro | Crea un nuevo recurso | orderDAO.Create(ctx, order) |
Save | bool | Registro | Guarda o actualiza un recurso | customerDAO.Save (ctx, customer) |
UpdateBy | bool /struct | Registro | Modifica un recurso filtrado por un campo | productDAO.UpdateByID(ctx, id, updates) |
DeleteBy | bool | Registro | Elimina un recurso por un campo específico | userDAO.DeleteByID(ctx, id) |
ExistsByID | bool | Registro | Verifica si un registro existe en la tabla por ID | userDAO.ExistsByID(ctx, id) |
ExistsAny | bool | Colección | Verifica si hay registros en una colección | userDAO.ExistsAnyActive(ctx) |
📌 Convenciones de Prefijos para Funciones de Eventos y Mensajería en Go
Estas funciones se utilizan para gestionar eventos y notificaciones dentro de la aplicación.
Prefijo | Tipo de Retorno | Orientación | Descripción | Ejemplo en Go |
Publish | bool | Colección | Publica un evento | PublishOrderCreatedEvent() |
Send | bool | Colección | Envía un mensaje o notificación | SendEmailNotification() |
Emit | bool | Colección | Dispara un evento en tiempo real | EmitUserConnectedEvent() |
Broadcast | bool | Colección | Envía un mensaje a múltiples destinatarios | BroadcastChatMessage() |
Subscribe | void | Colección | Se suscribe a un evento o canal | SubscribeToOrderUpdates() |
Consume | void | Colección | Consume mensajes de una cola | ConsumePaymentQueue() |
Conclusión
Funciones booleanas en reglas de negocio encapsulan lógica más compleja y combinan múltiples condiciones antes de devolver un resultado.
Funciones booleanas en GORM-GEN están enfocadas en representar datos en la base de datos sin incluir lógica adicional.
Funciones de eventos y mensajería permiten manejar notificaciones y comunicaciones de manera estructurada.
Separar estas funciones mejora la organización del código y permite una mejor reutilización dentro de la aplicación.
Este enfoque proporciona una forma clara y estructurada de definir funciones en Go, asegurando que cada capa del software tenga una responsabilidad bien definida. 🚀
Subscribe to my newsletter
Read articles from Gus directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
