Code verbessern & refaktorieren
Best Practices für Codeverbesserung und Refactoring mit Verdent
Verdent for VS Code hilft Ihnen, Code sicher über mehrere Dateien hinweg zu refaktorieren und zu verbessern, ohne die Funktionalität zu beeinträchtigen. Mit Plan Mode und dem Explorer-Subagenten können Sie alle betroffenen Dateien identifizieren, bevor Sie Änderungen vornehmen, sodass ein umfassendes Refactoring gewährleistet ist, ohne dass Instanzen übersehen werden.
Was Sie lernen werden
- Effektive Refactorings anfordern, die sich auf Ergebnisse statt auf die Implementierung konzentrieren
- Sicher über mehrere Dateien hinweg refaktorieren – mit Abhängigkeitsverwaltung
- Verbesserungen der Codequalität und Optimierungsvorschläge anfordern
- Groß angelegte Refactoring-Projekte mit mehrphasigen Ansätzen bewältigen
- Die Performance durch algorithmische und architektonische Verbesserungen optimieren
- Die Funktionalität des Codes während Refactoring-Vorgängen erhalten
Voraussetzungen
Bevor Sie mit Verdent refaktorieren:
- Visual Studio Code mit installierter Verdent-Erweiterung
- Eine Codebasis oder ein Projekt-Arbeitsbereich, der in VS Code geöffnet ist
- Ein aktives Verdent-Abonnement mit verfügbaren Credits
- Versionskontrolle (Git) wird empfohlen, um bei Bedarf sicher zurücksetzen zu können
Effektive Refactorings anfordern
Beschreiben Sie was Sie verbessern möchten und warum, statt wie es behoben werden soll. Lassen Sie Verdent den Code analysieren und den besten Ansatz basierend auf den Mustern Ihres Projekts vorschlagen.
Effektive Refactoring-Anfragen:
Konzentrieren Sie sich auf das gewünschte Ergebnis, nicht auf die Implementierung:
Refactor the UserController to improve readability and reduce duplicationThis authentication logic is scattered across multiple files. Consolidate it into a single moduleImprove error handling in the API layer to be more consistent and informativeVerdent analysiert den Code, identifiziert alle betroffenen Dateien, untersucht Muster und schlägt konkrete Refactoring-Strategien vor, die den Konventionen Ihrer Codebasis entsprechen.
Best Practice: Verwenden Sie Plan Mode
Starten Sie Refactoring-Anfragen im Plan Mode. Verdent wird:
- Den Code analysieren und alle betroffenen Dateien identifizieren
- Einen detaillierten Refactoring-Plan vorlegen, bevor Änderungen vorgenommen werden
- Klärende Fragen zu Implementierungspräferenzen stellen
- Genau zeigen, was sich ändert und in welcher Reihenfolge
- Ihnen ermöglichen, den Ansatz zu prüfen und zu verfeinern
Beispiel mit Plan Mode:
In Plan Mode: Refactor authentication logic to use a centralized authentication utilityVerdent wird:
- Explorer verwenden, um alle Code-Stellen zur Authentifizierung zu finden
- Muster und Inkonsistenzen identifizieren
- Eine einheitliche Authentifizierungsschnittstelle vorschlagen
- Zeigen, welche Dateien geändert werden
- Die Reihenfolge des Refactorings erläutern
Sie können Verdent bitten, den Plan vor der Ausführung in einer plan.md-Datei zu speichern, um ihn zusätzlich zu prüfen und im Team zu besprechen.
Explorer für umfassende Suchen verwenden:
Bitten Sie Verdent bei komplexen Refactorings explizit, den Explorer-Agenten für eine gründliche Suche zu verwenden:
Use the Explorer agent to find all places where we manually validate email addresses, then refactor them to use a centralized validation utilitySo stellen Sie sicher, dass Verdent jede Stelle findet, die aktualisiert werden muss, und verhindern ein inkonsistentes Refactoring in der gesamten Codebasis.
Plan Mode ist für Refactorings unerlässlich. Es verhindert Überraschungen, indem es genau zeigt, was sich vor der Ausführung ändert, und ermöglicht es Ihnen, den Ansatz anhand architektonischer Überlegungen zu verfeinern.
Refactoring über mehrere Dateien
Verdent refaktoriert über mehrere Dateien hinweg und behält dabei Imports, Abhängigkeiten und dateiübergreifende Referenzen bei. Es identifiziert alle betroffenen Dateien, aktualisiert sie in der richtigen Reihenfolge und sorgt für Konsistenz in der gesamten Codebasis.
So funktioniert das Refactoring über mehrere Dateien:
- Erkennungsphase: Verdent (mit Explorer) findet alle Dateien, die geändert werden müssen
- Abhängigkeitsanalyse: Identifiziert Abhängigkeiten zwischen Dateien, um die Aktualisierungsreihenfolge festzulegen
- Planerstellung: Zeigt alle zu ändernden Dateien und die Reihenfolge der Änderungen
- Sequenzielle Aktualisierungen: Ändert Dateien in Abhängigkeitsreihenfolge (z. B. Typen vor Komponenten, die sie verwenden)
- Import-Verwaltung: Aktualisiert automatisch Imports, Exports und dateiübergreifende Referenzen
- Verifizierung: Prüft, ob die Änderungen in allen Dateien konsistent sind
Das Refactoring über mehrere Dateien erhält die Funktionalität durch automatisierte Abhängigkeitsverfolgung – Verdent aktualisiert alle betroffenen Dateien atomar.
Beispiel:
Rename the User interface to UserProfile across the entire projectVerdent wird:
- Alle Dateien finden, die
Userimportieren oder verwenden - Typdefinitionen, Implementierungen und Verwendungen identifizieren
- Zuerst die Typdefinitionen aktualisieren, dann die Implementierungen, dann die Verwendungen
- Alle Import-Anweisungen anpassen
- Konsistenz in der gesamten Codebasis sicherstellen
Verwenden Sie Plan Mode, um den Umfang zu prüfen:
Prüfen Sie vor der Ausführung eines Refactorings über mehrere Dateien den vollständigen Umfang in Plan Mode:
In Plan Mode: Extract the authentication logic from UserController into a separate AuthServiceVerdent zeigt:
- Welche Dateien erstellt werden (neuer AuthService)
- Welche Dateien geändert werden (UserController und alle, die ihn importieren)
- Welcher Code von UserController zu AuthService verschoben wird
- Wie Imports und Abhängigkeiten aktualisiert werden
Dies verhindert eine ungewollte Ausweitung des Umfangs und stellt sicher, dass Sie die vollständigen Auswirkungen verstehen, bevor Sie fortfahren.
Verbesserungen der Codequalität anfordern
Verdent schlägt Verbesserungen nicht proaktiv vor, ohne dass Sie danach fragen. Sie können jedoch jederzeit Code-Qualitätsprüfungen und Verbesserungsvorschläge anfordern.
Fordern Sie umfassende Code-Qualitätsprüfungen an:
Review this code for potential improvementsSuggest ways to improve code quality in the UserService moduleAre there any performance optimizations we could make here?Analyze the PaymentController for maintainability issuesVerdent analysiert den Code und liefert konkrete Vorschläge für:
- Lesbarkeit: Variablenbenennung, Funktionszerlegung, Klarheit von Kommentaren
- Performance: Algorithmuskomplexität, redundante Operationen, Caching-Möglichkeiten
- Wartbarkeit: Code-Duplizierung, Kopplung, Trennung von Verantwortlichkeiten
- Best Practices: Entwurfsmuster, Fehlerbehandlung, Testabdeckung
- Sicherheit: Eingabevalidierung, Authentifizierungsprüfungen, Datenexposition
Für gezieltes Feedback verweisen Sie auf bestimmte Dateien:
@services/UserService.js Review this module for dependency injection improvements@controllers/PaymentController.js Identify opportunities to reduce complexityVerdent untersucht den angegebenen Code im Kontext der Muster Ihres Projekts und liefert umsetzbare Empfehlungen.
Groß angelegte Refactoring-Projekte
Verwenden Sie für groß angelegte Refactorings Plan Mode mit einem mehrphasigen Ansatz, um die zuverlässigsten Ergebnisse zu erzielen. Verdent unterteilt das Refactoring in überschaubare Etappen, sodass Sie jede Phase prüfen und genehmigen können, bevor Sie fortfahren.
Mehrphasiger Refactoring-Workflow:
Phase 1: Erste Analyse
Verwenden Sie Plan Mode mit dem Explorer-Agenten, um alle betroffenen Dateien und Abhängigkeiten zu identifizieren:
In Plan Mode: Use Explorer to analyze our codebase and create a plan to replace our custom authentication with OAuth 2.0Verdent führt eine umfassende Analyse durch:
- Identifiziert den gesamten authentifizierungsbezogenen Code
- Kartiert Abhängigkeiten und Integrationspunkte
- Bewertet Komplexität und Risikobereiche
- Schlägt eine Phasengliederung vor
Phase 2: Phasenplanung
Verdent erstellt einen mehrphasigen Plan zur Prüfung:
Beispielplan:
- Phase 1: OAuth-Bibliothek hinzufügen und Endpunkte konfigurieren
- Phase 2: Benutzermodell und Datenbankschema aktualisieren
- Phase 3: Bestehende Authentifizierungslogik migrieren
- Phase 4: Veralteten Authentifizierungscode entfernen
- Phase 5: Tests und Dokumentation aktualisieren
Jede Phase umfasst:
- Zu ändernde Dateien
- Geschätzte Komplexität
- Abhängigkeiten von vorherigen Phasen
- Risikobewertung
Phase 3: Phasenweise Ausführung
Führen Sie jeweils eine Phase aus und testen Sie zwischen den Phasen:
- Genehmigen Sie Phase 1 im Plan Mode
- Wechseln Sie zum Agent Mode und führen Sie sie aus
- Testen Sie gründlich, um sicherzustellen, dass Phase 1 funktioniert
- Kehren Sie für Phase 2 zum Plan Mode zurück
- Wiederholen Sie dies, bis alle Phasen abgeschlossen sind
Phase 4: Iterative Verfeinerung
Prüfen Sie die Ergebnisse nach jeder Phase. Wenn Probleme auftreten:
- Passen Sie den Plan für die verbleibenden Phasen an
- Fügen Sie bei Bedarf korrigierende Phasen hinzu
- Verfeinern Sie den Ansatz basierend auf den Erkenntnissen
Dieser phasenweise Ansatz gewährleistet Sicherheit und ermöglicht Kurskorrekturen, falls bei groß angelegten Refactoring-Projekten Probleme auftreten.
Groß angelegte Refactorings sollten immer mit Versionskontrolle durchgeführt werden. Committen Sie nach jeder Phase, damit Sie bei auftretenden Problemen zurücksetzen können, ohne den gesamten Fortschritt zu verlieren.
Performance-Optimierung
Verdent analysiert Code auf Performance-Engpässe und schlägt Optimierungen vor, darunter Verbesserungen der Algorithmuskomplexität, effiziente Datenstrukturen und eine reduzierte Ressourcennutzung.
Verbessern Sie die algorithmische Komplexität:
Analyze the performance of this data processing function and suggest improvementsCan we improve the time complexity of this search algorithm?Was Verdent identifiziert:
- Algorithmuskomplexität: O(n²)-Schleifen, verschachtelte Iterationen, ineffiziente Suchen
- Redundante Berechnungen: Wiederholte Berechnungen, unnötige Operationen
- Speicherprobleme: Speicherlecks, übermäßige Allokationen, lang gehaltene große Objekte
Beispiel:
Optimize the searchProducts function that's currently O(n²)Verdent analysiert die Funktion, identifiziert die Ineffizienz (verschachtelte Schleifen oder wiederholte lineare Suchen) und schlägt konkrete Verbesserungen vor:
- Verschachtelte Schleife durch eine Hash-Map für eine O(n)-Suche ersetzen
- Binäre Suche nach dem Sortieren verwenden für eine O(log n)-Komplexität
- Berechnete Ergebnisse cachen, um redundante Berechnungen zu vermeiden
- Memoization für aufwändige Operationen implementieren
Die Antwort umfasst:
- Aktuelle Komplexität: Erläuterung, warum der aktuelle Code langsam ist
- Vorgeschlagene Lösung: Konkrete Änderung des Algorithmus oder der Datenstruktur
- Performance-Gewinn: Geschätzte Verbesserung (z. B. O(n²) → O(n log n))
- Kompromisse: Speicherverbrauch, Codekomplexität, Überlegungen zur Wartbarkeit
Optimieren Sie UI-Komponenten und das Rendering:
Optimize this component to reduce unnecessary re-rendersWas Verdent identifiziert:
- Frontend-Performance: Unnötige Re-Renders, große Bundle-Größen, blockierende Operationen
- Komponenten-Lifecycle: Ineffiziente useEffect-Abhängigkeiten, fehlende Memoization
- State-Management: Redundante State-Updates, Prop-Drilling
Verdent analysiert Ihre Komponente und schlägt Optimierungen wie React.memo, useMemo, useCallback oder das Aufteilen von Komponenten vor.
Identifizieren und beheben Sie API- und Datenbank-Engpässe:
Identify performance bottlenecks in the API request handlerWas Verdent identifiziert:
- Datenbank-Performance: N+1-Abfragen, fehlende Indizes, ineffiziente Joins
- API-Performance: Langsame Endpunkte, ineffizientes Daten-Fetching, fehlendes Caching
Verdent untersucht Abfragemuster und schlägt Datenbankindizes, Caching-Strategien und Optimierungstechniken für API vor.
Geben Sie für die Performance-Optimierung Kontext zu typischen Datengrößen und Performance-Einschränkungen an. Dies hilft Verdent, Lösungen vorzuschlagen, die zu Ihrer Größenordnung passen (z. B. 100 Elemente im Vergleich zu 1 Million Elementen).
Profilieren Sie vor der Optimierung und messen Sie die Auswirkungen auf die Performance, um sicherzustellen, dass die Optimierungen einen sinnvollen Nutzen bringen.
Funktionalität während des Refactorings erhalten
Verdent hat zum Ziel, die Funktionalität des Codes während des Refactorings zu erhalten, indem dieselben Eingaben, Ausgaben und dasselbe Verhalten beibehalten werden, während die interne Implementierung verbessert wird.
So erhält Verdent die Funktionalität:
- Ein-/Ausgabe-Analyse: Identifiziert Funktionssignaturen, API-Verträge und erwartetes Verhalten
- Test-Bewusstsein: Betrachtet bestehende Tests als Verhaltensspezifikationen
- Konservative Änderungen: Nimmt minimale Änderungen vor, um das Refactoring-Ziel zu erreichen
- Verifizierung: Kann Tests generieren oder ausführen, um zu überprüfen, dass die Funktionalität erhalten bleibt
Best Practices für sicheres Refactoring:
-
Refaktorierten Code immer testen – Auch mit der Analyse von Verdent bestätigt manuelles oder automatisiertes Testen, dass die Funktionalität erhalten bleibt, insbesondere bei komplexen Refactorings
-
Versionskontrolle verwenden – Committen Sie vor dem Refactoring, damit Sie bei auftretenden Problemen zurücksetzen können
-
Inkrementell refaktorieren – Teilen Sie große Refactorings in kleinere Schritte auf und testen Sie nach jeder Änderung
-
Änderungen sorgfältig prüfen – Untersuchen Sie den Diff, um zu verstehen, was sich geändert hat und warum
-
Für komplexe Refactorings Plan Mode verwenden – Prüfen Sie den Ansatz vor der Ausführung, um mögliche Probleme zu erkennen
Beispiel: Sichere Refactoring-Anfrage
Refactor the calculateOrderTotal function to use a more maintainable structure, but ensure it produces identical results for all input casesVerdent wird:
- Die aktuelle Implementierung und Randfälle analysieren
- Eine refaktorierte Struktur vorschlagen
- Erläutern, warum die refaktorierte Version gleichwertig ist
- Testfälle vorschlagen, um die Gleichwertigkeit zu überprüfen
Wenn sich die Funktionalität ändern könnte:
In manchen Fällen ändert das Refactoring absichtlich das Verhalten (Fehlerbehebungen, verbesserte Validierung). Machen Sie dies explizit deutlich:
Refactor the email validation function to correctly handle international domains, which the current implementation doesn't supportDies signalisiert, dass die Verhaltensänderung erwartet und beabsichtigt ist.
Best Practices
Das Problem beschreiben, nicht die Lösung
Lassen Sie Verdent den Code analysieren und den besten Refactoring-Ansatz vorschlagen, statt konkrete Änderungen vorzuschreiben.
Für Refactorings immer Plan Mode verwenden
Prüfen Sie den vollständigen Plan vor der Ausführung. Dies verhindert Überraschungen und ermöglicht es Ihnen, den Ansatz anhand architektonischer Überlegungen zu verfeinern.
Explorer explizit für umfassende Suchen verwenden
Bitten Sie Verdent für ein gründliches Refactoring, Explorer zu verwenden, um alle Instanzen zu finden: „Verwende Explorer, um alle manuellen Fehlerbehandlungen zu finden, und refaktoriere sie dann so, dass unser Error-Utility verwendet wird."
Große Refactorings in Phasen aufteilen
Mehrphasige Ansätze mit Tests zwischen den Phasen sind sicherer und besser handhabbar, als alles auf einmal zu versuchen.
Zwischen den Phasen testen
Überprüfen Sie, dass jede Phase funktioniert, bevor Sie zur nächsten übergehen. Dies isoliert Probleme und verhindert, dass sich Fehler summieren.
Häufig committen
Verwenden Sie Versionskontrolle, um nach jeder Phase oder größeren Änderung Checkpoints zu erstellen. So können Sie sicher zurücksetzen, ohne den gesamten Fortschritt zu verlieren.
Pläne für die Teamprüfung speichern
Bitten Sie bei bedeutenden Refactorings Verdent, den Plan vor der Ausführung in plan.md zu speichern, um ihn im Team zu besprechen.
Kontext für die Optimierung bereitstellen
Wenn Sie Performance-Verbesserungen anfordern, geben Sie Informationen zu Datengrößen, Performance-Einschränkungen und akzeptablen Kompromissen an.