Refactoriser des fonctions volumineuses à l’aide du mode Agent de GitHub Copilot

Terminée

L’utilisation du mode Agent de GitHub Copilot ressemble à avoir un assistant qui est toujours là pour vous aider à développer et à gérer votre code.

En mode Agent, vous affectez des tâches à GitHub Copilot à l’aide d’invites en langage naturel dans le panneau de conversation. GitHub Copilot commence par analyser votre base de code en utilisant la tâche affectée pour établir le contexte nécessaire. L’agent génère un plan pour accomplir la tâche et affiche la liste des tâches subordonnées requises. Il s’ouvre puis modifie les fichiers associés dans l’éditeur de code. L’agent effectue l’analyse, la planification et l’implémentation de manière autonome et fournit un commentaire en cours d’exécution dans le panneau de conversation afin de pouvoir surveiller sa progression. Si nécessaire, l’agent demande des précisions, des informations supplémentaires ou une autorisation pour poursuivre une action spécifique. Une fois que l’agent a terminé la tâche, vous pouvez examiner les modifications et approuver (ou rejeter) les modifications individuelles. Vous restez en contrôle tout au long du processus.

Meilleures pratiques

Tenez compte de ces conseils pour tirer le meilleur parti du mode Agent :

  • Interrompre la refactorisation en petites étapes.
  • Passez en revue attentivement chaque modification.
  • Compilez et testez après chaque étape.

Commandes de refactorisation courantes

Voici quelques exemples d’invites pour les tâches de refactorisation courantes :

  • « Extrayez le code de validation sélectionné dans une nouvelle méthode privée nommée ValidateOrder qui accepte un paramètre Order et retourne un bool. Vérifiez que toute la logique de validation est déplacée et que le site d’appel d’origine utilise correctement la valeur de retour. »
  • « Passez en revue le code sélectionné. Identifiez et extrayez toute logique de calcul fiscal répétée dans une nouvelle méthode CalculateTax statique privée qui prend les paramètres nécessaires (montant, taxRate, région) et retourne le montant calculé de la taxe. Remplacez tous les calculs en double par les appels à cette méthode. »
  • « Passez en revue le code sélectionné. Convertissez cette chaîne if/else en expression de commutateur moderne, ce qui garantit que tous les cas sont couverts et que la logique reste équivalente. Utilisez des critères correspondants le cas échéant et conservez le même type de retour. »
  • « Passez en revue le code sélectionné. Extrayez tous les calculs tarifaires et totaux dans une nouvelle méthode ComputeTotals privée qui prend un paramètre Order, effectue tous les calculs et met à jour les propriétés totales de l’ordre. Assurez-vous qu’aucune logique de calcul n’est conservée dans la méthode d’origine. »

Exemple de flux de travail

Supposons que vous disposez d’une fonction ProcessOrder volumineuse qui gère le traitement des commandes, notamment la validation, les calculs tarifaires, l’enregistrement dans la base de données et l’envoi de notifications. La fonction est de plus de 200 lignes longues et doit être décomposée.

Vous pouvez utiliser les étapes suivantes pour refactoriser la fonction :

  1. Extrayez le premier segment :

    « Placez la validation d'entrée au début de ProcessOrder dans une méthode ValidateOrder(order) qui retourne un booléen. »

  2. Extrayez le deuxième segment :

    « Déplacer les calculs tarifaires dans une nouvelle méthode ComputeTotals(order) qui met à jour order.Total».

  3. Gérer la logique restante :

    Extrayez la logique d’enregistrement et de notification de manière similaire ou laissez-la dans la fonction principale du programme si elle est maintenant courte et claire.

  4. Nettoyer:

    Renommez des variables, supprimez le code inutilisé et assurez-vous de la cohérence.

Appliquer les suggestions du mode Interrogation

Utilisez la répartition du mode Ask pour guider le mode Agent :

  • Passez en revue le plan proposé par le mode "Ask" et vos questions de suivi.
  • Formulez un plan de refactorisation final pour le mode Agent.
  • Utilisez l’analyse à partir du mode Ask pour créer une série d’invites claires et spécifiques pour le mode Agent. Utilisez les noms de fonctions suggérés et les listes de paramètres dans vos invites le cas échéant.

Conseil / Astuce

Traitez le mode Agent comme un développeur junior dans votre équipe. Donnez des instructions claires, examinez leur travail et corrigez le cas échéant.

À quoi prêter attention lors de votre évaluation

Passez toujours en revue les modifications apportées par l’agent. Tenez compte de la liste de contrôle suivante :

  • Conservation de la logique : Vérifiez qu’aucun comportement n’est modifié.
  • Gestion des paramètres : Copilot peut oublier de passer une variable nécessaire.
  • Modification des noms et des modificateurs d’accès : Vérifiez qu’ils correspondent à votre style codebase.
  • Lignes manquées : Si Copilot ignore une ligne, déplacez-la ou demandez-la manuellement.

Gérer les résultats inattendus

Lorsque l’agent génère un résultat qui n’est pas ce que vous attendiez :

  • Annulez la modification ou rétablissez le fichier.
  • Essayez un plus petit pas ou une requête plus précise.
  • Corrigez les problèmes mineurs manuellement ou demandez à Copilot de les corriger.

Résumé

L’utilisation du mode Agent de GitHub Copilot simplifie le processus de refactorisation des fonctions volumineuses. En décomposant la tâche en étapes gérables et en utilisant des invites en langage naturel, vous maintenez le contrôle tout en permettant à l’agent de gérer le gros travail. Passez toujours en revue attentivement les modifications pour garantir la qualité du code et l’intégrité logique.