Utility vs Helper vs Service
Arquitectura de software
La arquitectura de software es un campo que no logras comprender en un principio, hasta que en el terreno empiezas a aplicar los patrones, los modelos o principios. En particular tres conceptos que recuerdo sobre los otros fueron Utility Helpers y Services.
Aunque no son los términos puros dentro de Clean Architecture o principios SOLID, una definición que a mi me sirvió para cada punto es la siguiente.
Utility
Es código de lo más básico, funciones puras, estáticas y globales; No saben nada de la lógica de negocio únicamente de lógica de programación. En Clean Architecture van en la capa mas externa, solo conocen de tipos de datos.
- Un conversor de moneda.
- Un formateador a la primera letra de un String a mayúscula.
Helpers
Estos si saben algo del contexto de tu aplicación, es código de apoyo para actividades repetitivas, puede o no requerir una instancia o manejar un estado temporal de tu aplicación.
- Por ejemplo un helper para dar formato a algún boton dentro de tu UI.
- Un helper para generar una URL amigable.
Services
Es un especialista que se encarga de realizar tareas técnicas completas. Generalmente se encargan de la comunicación con el mundo exterior (Apis, Bases de datos, sensores) o con paquetes externos.
- AuthService Maneja el login por ejemplo con Firebase.