Einfaches Code Refactoring
Reduzieren Sie die Komplexität Ihres Codes, verbessern Sie seine Lesbarkeit und erweitern Sie ihn, ohne dass sich das externe Verhalten ändert. Sie können mühelos älteren Code, vererbten Code oder die erste Version Ihrer Entwicklung überarbeiten.
Zugriff auf Refactoring-Befehle
Refactoring-Befehle sind in Menüs über Tastatur und Maus verfügbar. Der Inhalt des jeweiligen Menüs ist kontextabhängig. Refactoring kann über die Toolfenster von Visual Assist und im Texteditor für Symbole, Auswahl und leere Bereiche erfolgen.
Die Tastenkombination Umschalt+Alt+Q ruft ein kontextabhängiges Menü „Quick Action and Refactoring“ (Schnellaktion und Refactoring) für das aktuelle Symbol auf.
![context aware refactoring menu](/Presentation/WholeTomato/Assets/Images/features/refactoring/contextAwareRefactoringMenu.png)
Über das Kontextmenü des Texteditors steht eine komplette Liste von Refactoring-Befehlen zur Verfügung.
![Obtain a complete list of refactoring commands in the context menu](/Presentation/WholeTomato/Assets/Images/features/refactoring/listOfRefactoringCommands.png)
Wenn Sie mit der Maus auf ein Symbol zeigen und Visual Assist eine Symbolgrafik einblendet, ist das Refactoring verfügbar. Für den Aufruf eines kontextabhängigen Menüs klicken Sie auf die Grafik.
![Hover over a symbol and Visual Assist displays an icon when refactoring is available](/Presentation/WholeTomato/Assets/Images/features/refactoring/displayRefactoringMenu.png)
Signatur ändern
Ändern Sie die Signatur einer Methode von jedem Verweis, jeder Implementierung oder jeder Deklaration.
Sie können die Signatur einer Methode oder Funktion in einem einfachen Dialogfeld aktualisieren. Visual Assist ermittelt dann die Unterschiede zwischen der Original- und der neuen Signatur. Mit diesem leistungsstarken Refactoring, das auch alle Verweise auf Ihre Methode aktualisiert, können Sie Parameter neu anordnen, umbenennen, hinzufügen und löschen. Wenn Sie einen Parameter umbenennen, werden auch alle Verweise darauf in der Methode entsprechend umbenannt.
Sie können die folgenden Elemente einer Signatur ändern:
- Methodenname
- Rückgabetyp
- Sichtbarkeit
- Parameternamen
- Parametertypen
- Parameterreihenfolge
- Parameteranzahl
- Qualifizierer
Wie beim Refactoring durch Umbenennen können Sie den Geltungsbereich der Änderung festlegen und eine Vorschau für die Gruppe der Verweise, die überarbeitet werden, aufrufen.
![x](/Presentation/WholeTomato/Assets/Images/features/refactoring/changeSignature.png)
Zwischen Zeiger und Instanz konvertieren
Ändern Sie Objektzeiger auf Objektverweise und umgekehrt.
Sie können auf schnelle Weise den Typ in einer Deklaration konvertieren, „.“ und „->“ in Verweise ändern und „*“ und „&“ nach Bedarf anpassen.
![Change object reference to object pointer](/Presentation/WholeTomato/Assets/Images/features/refactoring/convertInstanceToPointer.png)
Felder kapseln
Erstellen Sie Zugriffsmethoden für ein Memberfeld durch Kapseln des Felds.
Beschränken Sie die Aktionen für ein Memberfeld durch Refactoring mithilfe von Feldkapselung. Zugriffsmethoden werden automatisch erstellt und benannt. Das ursprüngliche Feld bleibt dabei unverändert, für den Fall, dass älterer Code wegen der Aktualisierung von Verweisen kompiliert werden muss. Wenn Sie ein neues Feld kapseln, wandeln Sie das Feld sofort in privat um, um den zukünftigen Zugriff zu beschränken.
![Create accessors to a member field by encapsulating the field](/Presentation/WholeTomato/Assets/Images/features/refactoring/encapsulateField.png)
In C/C++ werden Zugriffsmethoden neben der Deklaration in einer Header-Datei erstellt und verbleiben dort für die Inline-Ausführung.
![In C/C++, accessor methods are created adjacent to a declaration in a header file](/Presentation/WholeTomato/Assets/Images/features/refactoring/accessorMethodsInHeader.png)
Wenn Sie lieber Implementierungen in einer Quelldatei vornehmen, kapseln Sie das Feld mit zusätzlichem Refactoring, um die Implementierungen in die entsprechende Quelldatei zu verschieben.
![Move the implementations to a corresponding source file](/Presentation/WholeTomato/Assets/Images/features/refactoring/moveImplementations.png)
Verschieben Sie ein Codesegment in eine separate Methode und ersetzen Sie das Segment durch einen Aufruf der extrahierten Methode.
Das Refactoring der Methodenextraktion bietet die Möglichkeit, das Lesen langer Methoden zu vereinfachen und gemeinsame Codeblöcke zu teilen. Sie können mehrere Zeilen oder ein komplettes Segment extrahieren. Der Rückgabewert und die Parameter der extrahierten Methode werden automatisch bestimmt.
![Move a segment of code into a separate method, and replace the segment with a call to the extracted method](/Presentation/WholeTomato/Assets/Images/features/refactoring/extractMethod.png)
In C/C++ wird mit dem Refactoring eine Inline-Methode in einer Header-Datei erstellt oder die Implementierung direkt in die Quelle extrahiert.
![In C/C++, the refactoring creates an inline method in a header file](/Presentation/WholeTomato/Assets/Images/features/refactoring/extractMethodDialog.png)
Variablen einführen
Ersetzen Sie einen Ausdruck durch eine Variable, die den Zweck des ersetzten Codes erläutert.
Mit „Introduce Variable“ wird eine temporäre Variable im innersten Bereich der Auswahl definiert, diese temporäre Variable mit dem ersetzten Code initialisiert und ein oder mehrere Vorkommen des Ausdrucks durch die temporäre Variable ersetzt.
![Replace an expression with a variable that explains the purpose of the replaced code.](/Presentation/WholeTomato/Assets/Images/features/refactoring/introduceVariableMonthDialog.png)
Verschieben Sie in C/C++ auf einfache Weise die Implementierung einer Methode von der Quelldatei in eine Header-Datei oder in die Klassendeklaration.
Durch dieses Refactoring werden die Implementierungen zur Inline-Ausführung in Header-Dateien platziert. Das Refactoring verschiebt außerdem eine Methodenimplementierung in eine Klassendeklaration in der Nähe anderer Methoden der gleichen Klasse. Sie können das Format der Implementierungen mit einem VA-Codefragment definieren.
![Move Implementation to Header File](/Presentation/WholeTomato/Assets/Images/features/refactoring/moveImplToClassMenu.png)
Implementierung zur Quelldatei verschieben
Verschieben Sie in C/C++ die Implementierung einer Methode von der Header-Datei in die Quelldatei.
Ein solches Refactoring wird oft nach anderen Refactorings initiiert, die Implementierungen in Header-Dateien für die Inline-Ausführung platzieren, z. B. beim Kapseln eines Felds. Das Refactoring erstellt eine Deklaration im Header und verschiebt die Implementierung in die Nähe anderer Methoden in der gleichen Klasse.
![Move Implementation to Source File](/Presentation/WholeTomato/Assets/Images/features/refactoring/moveImplementation.png)
Methodenimplementierungen zur Quelldatei verschieben
Verschieben Sie in C/C++ alle Implementierungen von der Header-Datei in die Quelldatei in einem Vorgang.
Ergänzend zu dem Refactoring-Befehl, mit dem eine einzelne Implementierung verschoben wird, lassen sich mit dieser Pluralversion alle Methoden aus einer Header-Datei in eine Klasse verschieben. Sie rufen diesen Befehl aus dem Namen einer Klasse und nicht aus dem eines ihrer Member auf. Im eingeblendeten Dialogfeld können Sie dann die Implementierungen auswählen, die verschoben werden sollen.
![Move Method Implementations to Source File](/Presentation/WholeTomato/Assets/Images/features/refactoring/moveImplementationsDialog.png)
Auswahl in eine neue Datei verschieben
Verschieben Sie Code in eine neue Header- oder Quelldatei und fügen Sie dabei die neue Datei automatisch dem aktiven Projekt hinzu.
Mit diesem Refactoring wird die neue Datei im Verzeichnis des aktiven Dokuments erstellt. Sie können das Format der neuen Datei mit einem VA-Codefragment definieren. In C/C++ haben Sie mit Visual Assist die Möglichkeit, die Auswahl im aktiven Dokument durch einen #include-Vorgang zu ersetzen, wenn die Auswahl in eine Header-Datei verschoben wird.
![Move code to a new header file or source file](/Presentation/WholeTomato/Assets/Images/features/refactoring/moveSelection.png)
Umbenennen
Benennen Sie schnell und präzise Symbole im aktiven Projekt und in der gesamten Lösung um.
Dieses häufig verwendete Refactoring bietet die Möglichkeit, die Definition und Deklaration eines Symbols, aller Verweise darauf und optional der Vorkommen in Kommentaren und Zeichenfolgen umzubenennen. Es wird immer eine Vorschau aller Ziele angezeigt, die umbenannt werden sollen. Damit lässt sich prüfen, ob das Umbenennen wie beabsichtigt erfolgt. Sie können die Auswahl der Verweise, die nicht umbenannt werden sollen, aufheben und den gesamten Vorgang bei einem Fehler rückgängig machen.
Folgende Elemente lassen sich umbenennen:
- Klassen
- Enumerationswerte
- Felder
- Makros
- Methoden
- Methodenparameter
- Variablen
Wählen Sie „Rename“ (Umbenennen) aus dem jeweiligen Refactoring-Menü aus, geben Sie einen neuen Namen an und legen Sie die gewünschten Optionen fest. In der Vorschau der Änderungen wird zwischen schreibgeschützten und schreibbaren Vorkommen unterschieden.
![Select Rename from any of the refactoring menus](/Presentation/WholeTomato/Assets/Images/features/refactoring/rename.png)
Dateien umbenennen
Benennen Sie das aktive Dokument um, ohne die Funktionsfähigkeit des Builds zu beeinträchtigen.
Das aktive Dokument und die zugehörigen Dateien lassen sich auf einfache Weise umbenennen, ohne den Ablauf zu unterbrechen oder den Build abzubrechen. Visual Assist aktualisiert automatisch Dateien, Projekte sowie Lösungen und überträgt dann die Umbenennung über Quellcodekontrollsysteme, die in Microsoft Visual Studio eingebunden sind.
In C/C++ werden Header- und Quelldateien paarweise umbenannt. Das Umbenennen einer Header-Datei aktualisiert automatisch alle Direktiven mit einem #include der Header-Datei entsprechend. In C# werden Design- und Hintergrunddateien gleichzeitig umbenannt.
![Rename your active document without breaking the build](/Presentation/WholeTomato/Assets/Images/features/refactoring/renameFiles.png)
Instanzdeklaration vereinfachen
Verbessern Sie die Lesbarkeit der Deklarationen von Objekten.
Sie können überflüssige Einstellungen eines Objekts für die neue Instanz seines Typs entfernen.
![Simplify an instance declaration](/Presentation/WholeTomato/Assets/Images/features/refactoring/simplifyMenu.png)
Nach Aufruf des Refactoring wird das Objekt in einer einfacheren, aber gleichwertigen Deklaration erstellt und initialisiert.
![Simplified instance declaration](/Presentation/WholeTomato/Assets/Images/features/refactoring/simplifyAfter.png)