Aller au contenu

Common rules

Copy of sumaris-pod/.agents/rules/common.md (rule written for AI coding agents, always applied). Do not edit here: run npm run site:sync-rules to update it.

  • Conditions: privilégie les méthodes statiques utilitaires
    • ArrayUtils.isEmpty()/isNotEmpty(), CollectionUtils.isEmpty()/isNotEmpty(), StringUtils.isBlank()/isNotBlank().
  • Streams: préfère Beans.getStream(x) pour supporter les valeurs nulles.
  • Dates: n’utilise pas Calendar; utilise Dates.addSeconds/addMinutes/addHours/addDays, Dates.safeParseDate, etc.
  • Lisibilité: factorise le code avec les helpers du module sumaris-shared (net.sumaris.core.util).

Logique Métier

  • Dates : Utiliser EXCLUSIVEMENT net.sumaris.core.util.Dates. Interdiction d'instancier Calendar ou SimpleDateFormat.
  • Collections : Utiliser CollectionUtils.isEmpty() et ArrayUtils.isEmpty().
  • Streams : Utiliser Beans.getStream(myCollection) pour éviter les NPE sur les collections nulles.
  • Configuration : Suivre le pattern onConfigurationReady() pour mettre en cache les options de configuration. Ne jamais lire une configuration dans une boucle ou une méthode appelée fréquemment.

Internationalisation

  • Utiliser I18n.t("key", args) avec l'import statique import static org.nuiton.i18n.I18n.t;.
  • Toutes les erreurs remontées à l'utilisateur doivent être traduites.

Logging

  • Utiliser la librairie Slf4f pour gérer les log applicatif, via l'annotation de class @Slf4j qui permet de déclarer automatiquement un log statique.