
Les bonnes pratiques de développement sur IBMi
L’IBMi est un super machine qui évolue très régulièrement au fil des ans.
Les programmes écrits il y a des années sont toujours en fonction, les applicatifs « maisons » ont été modifiées par de nombreuses personnes, dont certaines ne font plus partie des effectifs de l’entreprise, différents prestataires sont intervenus avec chacun son style ou sa méthode.
Tout ceci fait qu’il est habituel de trouver sur nos machines des programmes très disparates qui ne sont pas toujours simple à maintenir.
Les « bonnes pratiques » de développement IBMi, permettent, entre autres, d’y remédier.
Certaines d’entres elles peuvent paraitre évidentes, d’autres un peu contraignantes mais elles ont toutes pour finalité d’avoir un applicatif plus homogène et donc plus accessible à tous.
Certaines de ces « Bonnes Pratiques » sont spécifiques au RPG, au format FREE, à SQL ou à l’IBMi. Mais les autres peuvent être transposées sur d’autres langages ou plates-formes.
Bonnes pratiques : Générales IBMi
- Mettre en place des normes de nommages des composants (Programmes / Tables / Index / DSPF / PRTF /DATA AREA…).
- Remplacer la base de données DB2 par une base SQL.
- Définir et utiliser les noms longs.
- Utiliser les formats DATE, TIME, TIMESTAMP.
- Utiliser les contraintes d’intégrité.
- Ajouter des champs autogérés aux tables pour tracer les créations et modifications de données.
- Optimiser les requêtes SQL et créer des Index si nécessaire.
- Nettoyer les spools (vider les OUTQ)
- (…)
Bonnes pratiques : RPG
- Indenter le code.
- Commenter le code.
- Définir et respecter des normes de codifications lors de la saisie du code des programmes.
- Privilégier les variables locales aux variables globales.
- Préférer les procédures aux sous routines.
- Accéder aux données avec SQL plutôt qu’en RPG natif.
- Utiliser les formats DATE, TIME, TIMESTAMP.
- (…)
Bonnes pratiques : SQL EMBEDDED
- Proscrire les SELECT * dans les programmes RPG.
- Tester et gérer le SQLCODE en retour des requêtes SQL.
- Privilégier la fonction EXISTS à un COUNT(*) pour vérifier l’existence d’une donnée.
- Utiliser les jointures dés que possible.
- Utiliser des tables temporaires ou des GTT (Global Temporary Table).
- Optimiser les requêtes SQL et créer des Index si nécessaire.
- Ne jamais requêter un INDEX SQL
- (…)