Analysieren komplexer Logik mithilfe des Ask-Modus von GitHub Copilot

Abgeschlossen

Das Identifizieren komplexer Bedingungen, die vereinfacht werden können und sollten, ist nicht immer einfach. Die Planung der Umgestaltung ihres Codes kann noch schwieriger sein.

Entwickler können den Ask-Modus von GitHub Copilot verwenden, um komplexe Bedingungen umzugestalten und die Codequalität zu verbessern.

Was ist der Fragemodus?

Der Ask-Modus von GitHub Copilot ist eine Chatschnittstelle für Unterhaltungen. Sie stellen Fragen und GitHub Copilot gibt Antworten mithilfe des von Ihnen bereitgestellten Kontexts. Es ist wie ein erfahrener Kollege, der Ihren Code lesen und Ratschläge geben kann. Sie können z. B. den Ask-Modus verwenden, um zu erklären, was eine Funktion tut, potenzielle Probleme zu identifizieren oder Verbesserungen vorzuschlagen.

Der Fragenmodus antwortet mit Erklärungen, Erkenntnissen oder Codebeispielen, mit denen Sie Ihren Code verbessern können. Im Ask-Modus hat GitHub Copilot keine Änderungen an Ihren Codedateien vorgenommen.

Analysieren komplexer Bedingungen mithilfe des Ask-Modus

Sie können den Ask-Modus verwenden, um komplexe Bedingungen in Ihrem Code zu identifizieren und zu analysieren. GitHub Copilot kann Ihnen helfen, die bedingte Logik zu verstehen, potenzielle Probleme zu identifizieren und Verbesserungsmöglichkeiten zu bewerten.

Strategien für die Analyse komplexer Bedingungen

Hier sind einige Strategien für die Verwendung des Ask-Modus zum Analysieren komplexer Bedingungen:

  • Erläutern sie den Code: Fragen Sie GitHub Copilot, um zu erläutern, was die komplexe bedingte Funktion macht. Diese Frage hilft Ihnen sicherzustellen, dass Sie die aktuelle Logik verstehen, bevor Sie Änderungen vornehmen.

  • Identifizieren der Komplexität: Fragen Sie GitHub Copilot, um zu ermitteln, welche Teile der Bedingung sie komplex machen. Diese Frage kann Ihnen helfen, Bereiche zu identifizieren, auf die Sie sich konzentrieren sollten.

  • Finden Sie Edgefälle: Fragen Sie GitHub Copilot, um Edgefälle oder potenzielle Fehler in der bedingten Logik zu identifizieren. Diese Frage kann Ihnen dabei helfen, sicherzustellen, dass Ihr umgestalterter Code alle Szenarien behandelt.

  • Umgestaltung vorschlagen: Fragen Sie GitHub Copilot nach Vorschlägen zur Vereinfachung oder Umgestaltung der bedingten Logik. GitHub Copilot schlägt möglicherweise die Verwendung von Schutzklauseln, extrahierenden Methoden oder anderen Techniken vor, um die Klarheit zu verbessern.

  • Fragen Sie nach Beispielen: Wenn Sie nicht sicher sind, wie Sie einen Vorschlag implementieren, fragen Sie GitHub Copilot nach Codebeispielen. Diese Frage kann Ihnen helfen zu verstehen, wie Sie die Ratschläge in Ihrem spezifischen Kontext anwenden.

  • Erkunden Sie Risiken: Fragen Sie GitHub Copilot nach potenziellen Risiken oder Nebenwirkungen der Umgestaltung der bedingten Logik. Diese Frage kann Ihnen helfen, neue Fehler zu vermeiden.

  • Iterate: Verwenden Sie Nachverfolgungsfragen, um in bestimmte Vorschläge oder Problembereiche tiefer einzutauchen. Ein iterativer Ansatz kann Ihnen helfen, Ihr Verständnis zu verfeinern und Ihren Ansatz effektiver zu planen.

Fragemodus fordert zu komplexen Bedingungen auf

Die Eingabeaufforderungen, die Sie zum Analysieren komplexer Bedingungen verwenden, sollten Ihren spezifischen Code und Ihre Ziele widerspiegeln. Hier sind jedoch einige empfohlene bewährte Methoden, die Sie berücksichtigen sollten:

  • Konzentrieren Sie sich auf bestimmte Analysetechniken und nicht auf generische Hilfeanfragen.
  • Verweisen Sie auf bewährte Methoden wie SOLID-Prinzipien, Entwurfsmuster und Codierungskonventionen.
  • Fügen Sie Qualitätsmetriken wie zyklomatische Komplexität und Codegeruch hinzu.
  • Betonen Sie Tests und Risikominderungen, die für eine sichere Umgestaltung von entscheidender Bedeutung sind.
  • Fördern Sie bewährte Methoden für sicheren, verwalteten und lesbaren Code.
  • Fördern Sie systematisches Denken über geschäftliche Anforderungen und technische Implementierung.
  • Berücksichtigen Sie ggf. Leistungsüberlegungen, die für Produktionscode wichtig sind.

Einrichten des erforderlichen Chatkontexts

Wenn Sie den Ask-Modus verwenden, ist es wichtig, genügend Kontext für GitHub Copilot bereitzustellen, um den code zu verstehen, den Sie analysieren. Hier einige Tipps:

  • Verwenden Sie die Schaltfläche " Kontext hinzufügen " in der Chatoberfläche, um relevante Dateien oder Ordner aus Ihrer Codebasis einzuschließen.
  • Fügen Sie relevante Codeausschnitte oder Beispiele hinzu, die Ihre Punkte veranschaulichen.
  • Beschreiben Sie die spezifischen Ziele, die Sie für die Analyse haben (z. B. vereinfachende Logik, Identifizieren von Fehlern).
  • Erwähnen Sie alle Einschränkungen oder Anforderungen, die für die Analyse wichtig sind (z. B. Leistungsüberlegungen, Codierungsstandards).

Im Folgenden finden Sie einige Beispiele für Text in natürlicher Sprache, den Sie bei der Analyse komplexer Bedingungen in Ihre Eingabeaufforderung aufnehmen können:

Verständnis und Analyse

  • "Analysieren Sie die ausgewählte bedingte Logik, und erläutern Sie, was jede Verzweigung tut."
  • "Was ist die zyklomatische Komplexität des ausgewählten bedingten Blocks und warum?"
  • "Überprüfen Sie die ausgewählte Bedingung, und identifizieren Sie die wichtigsten Bedingungen, die ausgewertet werden, und deren Beziehungen."
  • "Welche Geschäftsregeln oder Anforderungen implementiert die ausgewählte bedingte Logik?"

Qualitätsbewertung

  • "Bewerten Sie die ausgewählte Bedingung für potenzielle Wartungsprobleme."
  • "Gibt es Codegeruche oder Antimuster in der ausgewählten bedingten Logik?"
  • "Überprüfen Sie die ausgewählte Bedingung, und identifizieren Sie die Randfälle oder Fehlerbedingungen, die möglicherweise nicht ordnungsgemäß behandelt werden."
  • "Folgt die ausgewählte Bedingung soliden Prinzipien? Wenn nicht, wie könnte es verbessert werden?"

Umgestaltungsmöglichkeiten

  • "Schlagen Sie spezifische Umgestaltungstechniken vor, um die ausgewählte bedingte Bedingung zu vereinfachen (Schutzklauseln, Polymorphismus, Strategiemuster usw.)."
  • "Wie kann ich die ausgewählte komplexe Bedingung in kleinere, fokussiertere Funktionen unterteilen?"
  • "Welche Entwurfsmuster könnten dazu beitragen, die Komplexität der ausgewählten Bedingten zu beseitigen oder zu verringern?"
  • "Zeigen Sie mir, wie Sie das Prinzip "Fail fast" auf die ausgewählte bedingte Logik anwenden."

Tests und Risikobewertung

  • Welche Testfälle benötige ich, um sicherzustellen, dass die ausgewählte bedingte Logik nach der Refaktorierung ordnungsgemäß funktioniert?
  • "Was sind die Risiken der Umgestaltung der ausgewählten Bedingten und wie kann ich sie mindern?"
  • "Wie kann ich überprüfen, ob der umgestaltete Code dasselbe Verhalten wie das Original aufweist?"
  • "Überprüfen Sie Ihre vorgeschlagenen Ansätze für die Umgestaltung der ausgewählten bedingten Bedingungen. Welche Leistungsauswirkungen sind mit jedem der vorgeschlagenen Ansätze verbunden?"

Best-Practice-Anwendung

  • Folgt die ausgewählte Bedingung den C#-Codierungskonventionen von Microsoft? Welche Verbesserungen sind erforderlich?"
  • Wie kann ich die Lesbarkeit und Selbstdokumentation der ausgewählten Bedingung verbessern?
  • "Welche Benennungsverbesserungen würden die ausgewählte bedingte Logik klarer machen?"
  • Wie kann ich die kognitive Belastung beim Lesen der ausgewählten Bedingung reduzieren?

Workflow im Modus „Fragen“ für komplexe Bedingungen

Der folgende Workflow veranschaulicht die Verwendung des Abfragemodus für eine komplexe Bedingung.

  1. Öffnen des problematischen Codes

    Navigieren Sie zu der Datei und Funktion, die die komplexe bedingte Logik enthält, die Sie umgestalten möchten. Angenommen, Sie haben eine Methode CalculateDiscount() , die im Laufe der Zeit mit vielen geschachtelten Bedingungen erweitert wurde.

  2. Auswählen des relevanten Codes

    Indem Sie den spezifischen Codeblock (z. B. die geschachtelten if Anweisungen) auswählen, geben Sie Copilot einen klaren Fokus. Copilot verwendet diese Auswahl als Kontext für die Beantwortung.

  3. Anfordern einer Erläuterung des Codes

    Fangen Sie klein an. Beispiel:

    "Copilot, können Sie erklären, was diese CalculateDiscount Methode tut?"

    Im Ask-Modus liest Copilot den Code vor und erzeugt eine Erklärung in einfachem Englisch. Dieser Schritt ist hilfreich, um sicherzustellen, dass Sie (und GitHub Copilot) die aktuelle Logik vollständig verstehen, bevor Sie sie ändern. Die Erklärung könnte wie folgt aussehen:

    "Diese Methode berechnet einen Rabatt für eine Bestellung. Zunächst prüft er, ob der Benutzer ein Premiummitglied ist; wenn ja, wird baseDiscount auf 10%festgelegt. Anschließend wird überprüft, ob ein Couponcode bereitgestellt wird. Wenn ein Coupon vorhanden ist, überprüft er das Ablaufdatum des Coupons und wendet bei Gültiger Gültigkeit einen zusätzlichen Rabatt an. Es hat auch Sonderfälle für Feiertagsverkäufe und Massenbestellungen..."

    Verwenden Sie die Erklärung, um die Absicht des Codes zu bestätigen. Die Erklärung kann sogar erkennen, wo die Logik verkettet ist.

  4. Fragen zur Komplexität stellen

    Jetzt können Sie analytisch werden. Beispiel:

    • "Gibt es redundante oder wiederholte Überprüfungen in diesem Code?"
    • "Welche Teile dieser Logik machen sie komplex?"
    • "Welche Edgefälle behandelt dieser Code?"

    Verwenden Sie die Antworten von GitHub Copilot, um Verbesserungsmöglichkeiten zu identifizieren. Beispiel:

    Der im Gutscheinabschnitt verschachtelte if erhöht die Komplexität. Darüber hinaus gibt es eine if-Anweisung mit fünf Ebenen für das Feiertagsgeschäft. Erwägen Sie, dies zu vereinfachen.“

    Verwenden Sie das Feedback, um Ihre Analyse fortzusetzen.

  5. Fragen nach Umgestaltungsvorschlägen

    Jetzt die Schlüsselfrage:

    "Wie kann ich diese bedingte Logik vereinfachen oder umgestalten?"

    Copilot kann im Ask-Modus mit einer Liste von Vorschlägen antworten. Beispiel:

    • Verwenden Sie Wächterklauseln, um die Fälle zu behandeln, in denen kein Rabatt gilt (z. B. wenn der Coupon ungültig ist, frühzeitig zurückkehren).
    • Extrahieren Sie die Gutscheinvalidierung und Rabattberechnung in eine eigene Funktion, um Klarheit zu schaffen.
    • Kombinieren Sie die beiden separaten Premium-Mitgliedsprüfungen an einem Ort, um Duplikate zu vermeiden.
    • Verwenden Sie anstelle von if/else einen Schalter oder ein Wörterbuch für die Multiplikatoren des Feiertagsgeschäfts.

    Es kann sogar kurzen Pseudocode skizzieren oder zeigen, wie ein Teil des Codes aussehen würde, nachdem diese Ideen angewendet wurden.

  6. Iterieren mit Folgefragen

    Sie können einen Drilldown zu einem beliebigen Vorschlag ausführen:

    • "Welche Bedingungen in dieser Funktion wären gute Schutzklauseln?"
    • "Können Sie mir zeigen, wie eine extrahierte Funktion für die Zinsberechnung aussehen könnte?"
    • "Für welche unterschiedlichen Rabattszenarien wird dieser Code berücksichtigt?"

    Durch diesen Dialog hilft GitHub Copilot bei der Gestaltung eines Umgestaltungsplans. Am Ende der Erkundung des Fragenmodus haben Sie möglicherweise eine Liste mit bestimmten Änderungen, die implementiert werden sollen, z. B.:

    • Fügen Sie eine vorzeitige Rückgabe für ungültige Coupons hinzu.
    • Verschieben sie die Berechnung des Feiertagsrabatts auf eine separate Funktion.
    • Entfernen Sie die doppelte Überprüfung für IsPremium, indem Sie sie einmal am Anfang durchführen.
    • Verwenden Sie eine einzelne kombinierte Bedingung für Massenbestellungen anstelle von zwei geschachtelten if Anweisungen.

Mit diesem strukturierten Ansatz wird sichergestellt, dass jede Umgestaltung die ursprüngliche Absicht beibehalten und gleichzeitig die Codeklarität und -verwendbarkeit verbessert.

Behandeln Sie GitHub Copilot-Vorschläge als Leitfaden

Obwohl GitHub Copilots Vorschläge oft gut sind, sind sie nicht unfehlbar. Behandeln Sie sie als Anleitung, nicht als absolute Wahrheit. Beispielsweise könnte GitHub Copilot eine Änderung vorschlagen, die das Verhalten geringfügig ändern würde, wenn der Code falsch interpretiert wurde. Überprüfen Sie immer alle kritischen Logikänderungen.

Da der Fragemodus Ihren Code nicht ändert, können Sie verschiedene Ansätze untersuchen und Vorschläge ohne Risiko auswerten.

Zusammenfassung

Die Verwendung des Ask-Modus von GitHub Copilot ist eine leistungsstarke Möglichkeit, die Umgestaltung komplexer Bedingungen zu analysieren und zu planen. Indem Sie sich in einer gesprächigen Weise engagieren, können Sie Einblicke in die vorhandene Logik gewinnen, Schwachstellen identifizieren und angepasste Vorschläge zur Vereinfachung erhalten. Dieser Ansatz trägt dazu bei, sicherzustellen, dass jede Umgestaltung die ursprüngliche Absicht beibehält und gleichzeitig die Codeklarität und -verwendbarkeit verbessert.