Identifier et évaluer de grandes fonctions à l’aide du mode Demander de GitHub Copilot

Terminée

L’utilisation du mode Demander de GitHub Copilot est comme avoir un collègue compétent qui est toujours disponible pour répondre à vos questions. GitHub Copilot peut répondre à des questions sur votre codebase, vos bibliothèques de code, vos meilleures pratiques et votre environnement de développement. Le mode Ask ne modifie pas directement votre code, mais fournit des explications, des insights et des suggestions que vous pouvez utiliser pour améliorer votre code.

Le mode Demander de GitHub Copilot est utile quand vous traitez de grandes fonctions complexes et difficiles à comprendre. En posant des questions ciblées, vous pouvez décomposer une grande fonction en parties gérables, identifier les domaines d’amélioration et planifier efficacement vos efforts de refactorisation du code.

Cas d’usage généraux pour le mode Demander de GitHub Copilot

Le mode Ask de GitHub Copilot est intégré à Visual Studio Code via l’extension GitHub Copilot Chat. Vous pouvez démarrer une conversation en mode Poser en ouvrant le panneau de conversation et en tapant vos questions en langage naturel. Voici quelques cas d’usage courants pour le mode Demander :

  • Expliquer/résumer le code : Générez une répartition du langage naturel de ce que fait le code. Vous pouvez demander à GitHub Copilot de résumer une base de code entière ou n’importe quelle classe, méthode ou bloc de code.
  • Identifier les sections logiques : Retourne souvent une liste numérotée de tâches ou d’étapes distinctes effectuées par le code.
  • Mettez en évidence les problèmes : Peut signaler la répétition ou la complexité.
  • Répondez à des questions spécifiques : « Que fait cette boucle ? » ou « Pourquoi ces paramètres sont-ils nécessaires ? »
  • Suggérer des approches de refactorisation : « Vous pouvez extraire ces étapes dans des fonctions distinctes... »

Identifier et évaluer de grandes fonctions à l’aide du mode Demander de GitHub Copilot

Il existe plusieurs scénarios dans lesquels le mode Ask peut vous aider à identifier et analyser des fonctions volumineuses :

  • Identification des fonctions volumineuses potentiellement problématiques : Demandez à Copilot de rechercher des fonctions qui dépassent un certain nombre de lignes ou un seuil de complexité.
  • Présentation des fonctionnalités : Demandez ce que fait la fonction à un niveau élevé.
  • Décomposer la logique : Demandez une explication étape par étape de la logique de la fonction.
  • Identification des problèmes : Renseignez-vous sur les problèmes potentiels ou les odeurs de code.
  • Suggestions de refactorisation : Demandez des conseils sur la refactorisation de la fonction pour améliorer la lisibilité et la maintenance.
  • Exploration des alternatives : Demandez différentes façons d’implémenter la même fonctionnalité.
  • Bonnes pratiques d’apprentissage : Demander des bonnes pratiques de codage liées à l’objectif de la fonction.

Voici un processus de haut niveau qui utilise GitHub Copilot pour identifier et analyser de grandes fonctions :

  1. Identifier les fonctions volumineuses problématiques : utilisez le mode Demander pour identifier les fonctions qui dépassent les seuils spécifiés.

  2. Passez en revue les résultats de GitHub Copilot : analysez la liste des fonctions identifiées et hiérarchiser celles-ci en fonction de la complexité et de l’impact. Utilisez votre jugement pour sélectionner des fonctions qui bénéficieraient le plus de la refactorisation.

  3. Évaluer une fonction volumineuse spécifique : utilisez le mode Demander pour analyser la fonction en détail.

    1. Posez une question à l’aide d’une invite de langage naturel, par exemple :

      • « Analysez la fonction sélectionnée et fournissez un résumé de haut niveau de son objectif et de ses principales responsabilités. Incluez toutes les préoccupations relatives à la complexité ou à la maintenance que vous remarquez.
      • « Décomposez la fonction sélectionnée en ses tâches logiques ou responsabilités distinctes. Pour chaque tâche, indiquez quelles lignes de code sont impliquées et si chaque tâche peut être extraite dans une fonction distincte. »
      • « Identifiez les opportunités de refactorisation spécifiques dans la fonction sélectionnée. Suggèrez quels blocs de code peuvent être extraits dans des méthodes distinctes, ce que ces méthodes doivent être nommées et quels paramètres ils auraient besoin. »
      • « Analysez la complexité cyclomatique de la fonction sélectionnée. Identifiez les points de décision (conditions if, boucles, cas d'alternatives) qui contribuent le plus à la complexité et suggérez des stratégies spécifiques pour la réduire, telles que les clauses de garde, les retours anticipés ou les patrons de stratégie.
      • « Évaluez la fonction sélectionnée par rapport aux principes SOLID. Quels principes viole-t-il et comment ?
      • « Identifiez les odeurs de code dans la fonction sélectionnée, telles que les listes de paramètres longues, les conditions imbriquées ou les modèles de code répétés. Fournissez des exemples spécifiques.
      • « Suggérer un plan de refactorisation pas à pas pour la fonction sélectionnée, en hiérarchisant les modifications qui auraient le plus d’impact sur la lisibilité et la maintenance. »
    2. Passez en revue la réponse de GitHub Copilot dans le panneau de conversation :

      1. Appliquez votre compréhension de la base de code et des règles d’entreprise applicables. Utilisez vos propres connaissances pour vérifier l’analyse de GitHub Copilot.

      2. Recherchez des insights actionnables dans la réponse. Par exemple, vous pouvez trouver des tâches ou des sections de code spécifiques qui peuvent être extraites dans des fonctions distinctes.

    3. Demandez des suivis :

      • « Passez en revue les modèles de gestion des erreurs dans la fonction sélectionnée. Existe-t-il des possibilités de consolider la gestion des erreurs, d’améliorer les messages d’erreur ou d’extraire la gestion des erreurs dans des composants réutilisables ?
      • « Évaluer la fonction sélectionnée par rapport au principe de responsabilité unique. S’il a plusieurs responsabilités, identifiez chacun d’eux et suggèrez comment ils pourraient être séparés en fonctions prioritaires et à usage unique.
      • « Passez en revue le plan de refactorisation suggéré pour la fonction sélectionnée. Existe-t-il des implications en matière de sécurité, de performances ou de maintenance que je dois prendre en compte ? Expliquer.
    4. Planifiez votre refactorisation :

      1. Utilisez les insights pour décrire une stratégie de refactorisation.

      2. Déterminez les parties à extraire dans des fonctions ou des classes distinctes.

Conseils pour l’utilisation efficace du mode Demander

Pour tirer le meilleur parti du mode Demander de GitHub Copilot, tenez compte des conseils suivants :

  • Soyez spécifique : Demandez des sections particulières si nécessaire.
  • Gardez le contexte visible : Assurez-vous que GitHub Copilot peut « voir » l’ensemble de la fonction. Ajoutez des fichiers associés au contexte de conversation si nécessaire.
  • Ne faites pas confiance aveuglement aux suggestions : Utilisez votre jugement.
  • Utilisez la sortie Ask Mode comme blueprint : planifiez vos efforts de refactorisation du code en fonction de la répartition de GitHub Copilot.

Note

Les développeurs expérimentés peuvent utiliser le mode Ask comme deuxième avis et valider leurs propres plans de refactorisation des fonctions volumineuses. Si GitHub Copilot identifie les mêmes fonctions que celles que vous avez identifiées, vous savez que vous êtes sur la bonne voie. Si GitHub Copilot suggère de refactoriser d’autres fonctions, vous pouvez utiliser les insights de GitHub Copilot pour évaluer ce que vous avez manqué.

Résumé

Le mode Demander de GitHub Copilot est un outil puissant permettant d’analyser et de comprendre les fonctions volumineuses. En posant des questions ciblées, vous pouvez décomposer le code complexe, identifier les domaines d’amélioration et planifier efficacement votre projet de refactorisation du code. Utilisez le mode Demander en tant qu’assistant de planification avant de commencer à refactoriser pour garantir une approche bien réfléchie.