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
Asyncy, cuando aplique, un parámetroCancellationTokenal 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):
| Proyecto | Contiene |
|---|---|
Crono | Elementos 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.Datos | Proveedores de base de datos. |
Crono.Nucleo | Módulos de aplicación: persona, actividades, identidad, seguridad, localización, registro, mensajería, motor de reglas, búsqueda, temas, migraciones, etc. |
Crono.Web.Comun | Infraestructura web común: MVC personalizado, agrupamiento, TagHelpers, HtmlHelpers. |
Crono.Modulos | Todos los módulos/complementos. |
Crono.Web | Host de entrada: controladores, modelos, temas, recursos estáticos. |
Servicios y dependencias
- Inyecta dependencias por constructor; para las más comunes, usa
IComunServiciosen 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
Iniciadordel proyecto/módulo con el tiempo de vida adecuado (InstancePerLifetimeScopepara servicios de solicitud).
Datos y validación
- Entidades derivadas de
EntidadBase; catálogos fijos conEntidadConEnumeracion<T>. - Cambios de esquema mediante migraciones FluentMigrator con
[MigracionVersion(...)], protegidas con guardasSchema.Table(...).Exists(). - Validación con validadores de Crono (ver Validación); en la API, la validación de modelo devuelve
422automá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.scssywwwroot/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).