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).