Voici ces 10 règles, avec explication simplifiée :

✅ 1. Limiter le code à une seule action par ligne

  • Pourquoi : Cela améliore la lisibilité et réduit les erreurs de compréhension.

  • Exemple : ❌ if (x = 0) y = 3;

    if (x == 0)
        y = 3;
    

✅ 2. Déclarer les variables dès leur utilisation

  • Pourquoi : Évite les erreurs dues à l’utilisation accidentelle d’anciennes valeurs ou de variables mal initialisées.


✅ 3. Limiter la portée des variables

  • Pourquoi : Moins une variable est accessible, plus on maîtrise son usage et donc ses effets secondaires.


✅ 4. Éviter l’utilisation de l’allocation dynamique

  • Pourquoi : La mémoire dynamique (malloc, new) est difficile à maîtriser dans des systèmes critiques (fuites mémoire, fragmentation).


✅ 5. Limiter la complexité cyclomatique

  • Pourquoi : Mesurer le nombre de chemins logiques dans une fonction. S’il y en a trop, le code devient difficile à tester/examiner.

  • Règle : ≤ 10 branches de décision par fonction.


✅ 6. Limiter la profondeur d’imbrication à 3 niveaux

  • Pourquoi : Améliore la lisibilité et diminue la complexité mentale.


✅ 7. Limiter chaque fonction à 60 lignes maximum

  • Pourquoi : Une fonction courte est plus facile à lire, tester, maintenir.


✅ 8. Utiliser uniquement un sous-ensemble sûr du langage C

  • Pourquoi : Certains aspects du C sont dangereux (pointeurs, arithmétique non définie…).

  • Exemple : Éviter les arithmétiques sur des pointeurs, goto, les unions, etc.


✅ 9. Inclure des commentaires structurés

  • Pourquoi : Le code critique doit être documenté de manière formelle (description, entrées/sorties, exceptions, etc.).


✅ 10. Compiler avec tous les warnings activés et traiter chaque warning comme une erreur

  • Pourquoi : Cela pousse à écrire du code propre dès la compilation.


📌 Bonus : autres pratiques de la NASA/JPL

  • Tests unitaires automatisés systématiques

  • Revue de code systématique en binôme

  • Pas de raccourcis ni d’optimisation prématurée

  • Pas de dépendance non maîtrisée

  • Analyse statique obligatoire


📘 Source principale :

  • Gerard J. Holzmann – « The Power of Ten – Rules for Developing Safety Critical Code », NASA/JPL.

Souhaites-tu que je t’en fasse un poster ou un document PDF à imprimer pour ton équipe ?