Files
skills-IA/raggaroth-senior-dev/references/backend-languages.md
T
2026-07-12 15:18:42 +02:00

2.5 KiB

Backend : Java, Python, Bash

Points à vérifier en priorité selon le langage. Utiliser la grille de sévérité de SKILL.md.

Java (8 → 25)

  • Version cible : vérifier que les features utilisées (records, pattern matching, sealed classes, virtual threads...) correspondent bien à la version de langage réellement ciblée par le module — un usage de feature récente dans un module encore en Java 8/11 est 🔴.
  • Gestion d'exceptions : ne jamais avaler silencieusement (catch (Exception e) {}) → 🔴 si ça masque une erreur réelle, 🟠 sinon.
  • Null-safety : préférer Optional en retour de méthode plutôt que retourner null sans le documenter.
  • Ressources : try-with-resources systématique pour tout ce qui implémente Closeable/AutoCloseable (fichiers, connexions DB, sockets).
  • Concurrence : attention aux collections non thread-safe partagées entre threads ; si virtual threads (Java 21+), vérifier l'absence de synchronized bloquant qui annule le bénéfice (pinning).
  • Build : cohérence Maven/Gradle avec le reste du studio, pas de dépendance ajoutée sans justification.

Python 3

  • Typing : encourager les type hints sur les fonctions publiques/API, surtout dans du code partagé entre modules — absence de typing sur une fonction publique = 🟡.
  • Gestion d'erreurs : except Exception: nu ou except: bare = 🔴 (masque tout, y compris KeyboardInterrupt/bugs).
  • Mutable default arguments (def f(x=[])) = 🔴, piège classique.
  • Environnements : vérifier la présence d'un fichier de dépendances explicite (requirements.txt / pyproject.toml) et l'absence d'installs globales non versionnées.
  • Context managers (with) pour tout ce qui ouvre une ressource (fichiers, connexions DB/PostgreSQL, subprocess).
  • f-strings plutôt que % ou .format() pour la lisibilité (🔵 suggestion seulement, pas bloquant).

Bash

  • set -euo pipefail en tête de script sauf raison explicite de ne pas l'avoir → absence = 🟠 (échecs silencieux en cascade).
  • Toujours quoter les variables ("$var") sauf besoin explicite de split — variable non quotée dans un chemin de fichier = 🔴 potentiel (injection/špace bugs).
  • Éviter de parser ls ; préférer les globs ou find -print0 / while read -r.
  • Vérifier les codes de sortie des commandes critiques plutôt que de supposer le succès.
  • Scripts destinés à tourner en CI Gitea ou en conteneur : vérifier l'idempotence (peut être relancé sans effet de bord destructeur).