Développement

Refactoriser son code WinDev : astuces et bonnes pratiques

Refactoriser son code WinDev : astuces et bonnes pratiques

La refactorisation est une étape essentielle pour maintenir un code propre, lisible et évolutif. Dans WinDev, cette pratique est facilitée par des outils intégrés et des bonnes pratiques spécifiques au WLanguage.

Voici comment optimiser votre code, avec des exemples techniques et des conseils pour utiliser la refactorisation automatique.

1️⃣ Pourquoi refactoriser son code WinDev ?

  • Améliorer la lisibilité : un code clair est plus facile à maintenir.
  • Réduire la dette technique : éviter les copier-coller et redondances.
  • Optimiser les performances : simplifier boucles, requêtes et conditions.
  • Faciliter la collaboration : un code structuré est compréhensible par toute l’équipe.

2️⃣ Bonnes pratiques de refactorisation

2.1 Nomenclature claire et cohérente

Utilisez une nomenclature explicite et respectez les conventions WinDev :

  • Variables : sNomClient, nMontantTotal, bEstValide
  • Procédures : pl_CalculerTotal(), pg_EnvoyerEmail()
  • Champs : SAI_Nom, BTN_Valider, TABLE_Commandes

Exemple :

// ❌ À éviter
n = 10
s = "Nom"

// ✅ À privilégier
nNombreClients est un entier = 10
sNomClient est une chaîne = "Dupont"

2.2 Éviter les structures complexes

Remplacer les SINON SI par des SELON :

// ❌ À éviter
SI sType = "A" ALORS
    // ...
SINON SI sType = "B" ALORS
    // ...
FIN

// ✅ À privilégier
SELON sType
    CAS "A"
        // ...
    CAS "B"
        // ...
    AUTRES CAS
        // ...
FIN

Simplifier les conditions :

// ❌ À éviter
SI bTest = Vrai ALORS
    // ...
FIN

// ✅ À privilégier
SI bTest ALORS
    // ...
FIN

2.3 Factoriser le code

Évitez les répétitions en créant des procédures réutilisables :

// ❌ À éviter : code dupliqué
POUR TOUT Fichier
    hLitRecherchePremier(Client, Client.IDFichier, Fichier.ID)
    // ...
FIN

// ✅ À privilégier : requête optimisée
oReq = hExecuteRequeteSQL("SELECT * FROM Fichier JOIN Client ON Client.IDFichier = Fichier.ID")
POUR TOUT oReq
    // ...
FIN

2.4 Limiter la taille des fonctions

  • Une fonction ne devrait pas dépasser 100 lignes.
  • Privilégiez des fonctions courtes et spécialisées.
// ❌ À éviter : fonction trop longue
PROCEDURE TraiterCommande()
    // 200 lignes de code...
FIN

// ✅ À privilégier : découpage
PROCEDURE TraiterCommande()
    pl_ValiderClient()
    pl_CalculerMontant()
    pl_EnvoyerConfirmation()
FIN

3️⃣ Refactorisation automatique avec WinDev

WinDev propose un outil intégré pour extraire automatiquement du code vers une nouvelle procédure.

3.1 Créer une procédure à partir d’un bloc de code

  1. Sélectionnez le bloc de code.
  2. Clic droit → Nouveau → Créer une procédure globale/locale.
  3. Donnez un nom explicite (ex : pl_ValiderAdresseClient).
  4. WinDev génère automatiquement la procédure.

Exemple :

// Avant refactorisation
POUR TOUT Client
    SI Client.Solde < 0 ALORS
        Info("Le client " + Client.Nom + " a un solde négatif.")
    FIN
    SI Client.Email = "" ALORS
        Info("Le client " + Client.Nom + " n'a pas d'email.")
    FIN
    SI Client.Adresse = "" ALORS
        Info("Le client " + Client.Nom + " n'a pas d'adresse.")
    FIN
FIN

// Après refactorisation
POUR TOUT Client
    pl_ValiderClient(Client)
FIN

3.2 Avantages

  • ⏱️ Gain de temps
  • 🛡️ Réduction des erreurs
  • 🧩 Code plus modulaire

4️⃣ Outils complémentaires

  • Analyseur de code WinDev : détecte variables inutilisées et optimisations.
  • Générateur de documentation : documentation automatique des procédures.
  • Tests unitaires : sécuriser les modifications.

🎯 Conclusion

La refactorisation dans WinDev est un processus continu qui améliore la qualité et la maintenabilité du code.

En appliquant ces bonnes pratiques et en utilisant les outils intégrés, vous gagnerez en efficacité, en clarté et en stabilité.

À vous de jouer : identifiez une partie de votre code à refactoriser et testez les outils WinDev dès aujourd’hui !

#WinDev #Refactoring #CleanCode #WLangage #DeveloppementLogiciel #BonnesPratiques #ArchitectureLogicielle