Common rules¶
Copy of
sumaris-pod/.agents/rules/common.md(rule written for AI coding agents, always applied). Do not edit here: runnpm run site:sync-rulesto 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; utiliseDates.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'instancierCalendarouSimpleDateFormat. - Collections : Utiliser
CollectionUtils.isEmpty()etArrayUtils.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 statiqueimport 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
@Slf4jqui permet de déclarer automatiquement unlogstatique.