Skip to main content

Estándares de código

Convenciones para escribir código coherente con el resto de Crono. No son reglas arbitrarias: buscan que cualquier desarrollador reconozca rápido dónde va cada cosa y cómo se hace en este proyecto.

Lenguaje y nomenclatura​

  • El código de Crono usa nomenclatura en español de forma consistente: clases, interfaces, métodos, propiedades y espacios de nombres (IniciadorBase, IComunServicios, ObtenerRutaConfiguracion, EntidadBase). Sigue esa convención al añadir código nuevo.
  • Interfaces con prefijo I (IProveedor, IEventoPublicador).
  • Métodos asíncronos con sufijo Async y, cuando aplique, un parámetro CancellationToken al final.
  • C# moderno y ASP.NET Core, con arquitectura limpia y separación de responsabilidades.

Dónde va cada cosa​

La estructura del repositorio marca la responsabilidad de cada capa (ver Organización del código fuente):

ProyectoContiene
CronoElementos de bajo nivel independientes de la app: iniciador, modularidad, caché, eventos, imágenes, conversión de tipos, E/S, plantillas, programación, utilidades y extensiones.
Crono.DatosProveedores de base de datos.
Crono.NucleoMódulos de aplicación: persona, actividades, identidad, seguridad, localización, registro, mensajería, motor de reglas, búsqueda, temas, migraciones, etc.
Crono.Web.ComunInfraestructura web común: MVC personalizado, agrupamiento, TagHelpers, HtmlHelpers.
Crono.ModulosTodos los módulos/complementos.
Crono.WebHost de entrada: controladores, modelos, temas, recursos estáticos.

Servicios y dependencias​

  • Inyecta dependencias por constructor; para las más comunes, usa IComunServicios en vez de inyectar muchas por separado (ver Inyección de dependencias).
  • La lógica de negocio va en servicios (IXServicio), no en los controladores; el controlador orquesta HTTP y arma el modelo.
  • Las consultas complejas van en buscadores (IXBuscador).
  • Registra los servicios en el Iniciador del proyecto/módulo con el tiempo de vida adecuado (InstancePerLifetimeScope para servicios de solicitud).

Datos y validación​

  • Entidades derivadas de EntidadBase; catálogos fijos con EntidadConEnumeracion<T>.
  • Cambios de esquema mediante migraciones FluentMigrator con [MigracionVersion(...)], protegidas con guardas Schema.Table(...).Exists().
  • Validación con validadores de Crono (ver Validación); en la API, la validación de modelo devuelve 422 automáticamente.
  • Cada operación protegida declara su [Permiso(...)] (ver Seguridad).

Interfaz de usuario​

  • Crono tiene su propio sistema de diseño. Bootstrap se usa solo como base técnica y se sobrescribe (colores, tokens, espaciados, radios, tipografía) para lograr la apariencia propia del sistema.
  • Prefiere siempre los componentes propios de Crono (y sus tag helpers) frente a los de Bootstrap cuando exista un equivalente.
  • Compón las pantallas con el lenguaje visual de Crono: contenedores operativos, encabezados con acciones, pares clave‑valor, tablas densas, formularios estructurados, tabs, paneles laterales y status badges, con jerarquía sobria. La apariencia final debe seguir el sistema de diseño de Crono, no Bootstrap puro.
  • Los estilos de módulo van en wwwroot/admin.scss y wwwroot/publico.scss; recuerda que no hay recarga en caliente (ver Estilos de tema).

Reglas de negocio​

En el dominio financiero (préstamos, cronogramas, cuotas, intereses, moras, pagos, contabilidad, cartera, provisiones), respeta las reglas de negocio ya establecidas en el sistema y adáptalas al contexto local y a la normativa aplicable (por ejemplo, SUNAT/SBS).