Codegenerierung und Refaktorierung

Erstellen anhand Verwendung

In CLion können Sie Funktionen, Variablen, Member oder sogar Klassen verwenden, bevor diese deklariert sind. Die IDE hebt diese rot hervor und schlägt einen Quick-Fix vor. Drücken Sie Alt+Enter, um die entsprechende Deklaration hinzuzufügen. Bei Funktionen erkennt CLion auch deren Rückgabetyp sowie deren Parameterarten.

Aktionen von Intentionen

Mit Intentionen können Sie automatisierte Änderungen am Code vorzunehmen, um diesen zu verbessern oder Ihre Programmierroutine zu vereinfachen. Fügen Sie einem Konstruktor Member und Initialisierer hinzu, wenden Sie De Morgansche Gesetze auf einen logischen Ausdruck an, bringen Sie typedef ein, verschieben Sie die Klasse von Definitionen und vieles mehr. Die Glühbirne in der linken Randleiste des Editors zeigt an, dass eine oder mehrere Aktionen von Intentionen zur Verfügung stehen; Mit Alt+Enter können Sie diese anwenden.

„Surround with“ und Live-Templates

Nutzen Sie Live-Templates (Code | Insert Live Template auswählen oder Strg+J drücken), um ganze Code-Konstrukte zu erzeugen. Sämtliche gebrauchsfertigen Live-Templates sind in den Einstellungen aufgelistet (Editor | Live Templates). Die vorhandenen Templates können beliebig erweitert und angepasst werden. Um ein Live-Template auf den Code anzuwenden, geben Sie seine Abkürzung ein und bestätigen Sie mit der Tabulatortaste. Mit der Enter- oder der Tabulatortaste navigieren Sie durch die Variablen der Templates.

Erwägen Sie auch „Surround with“-Templates, um Ihren Code schnell mit kompletten Konstrukten zu umgeben. Wählen Sie Code | Surround With oder drücken Sie Strg+Alt+T, um je nach Kontext mühelos if, while, for, #ifdef oder andere Wrapper zu generieren.

Generierungsmenü

Das Generierungsmenü von CLion Alt+Einfügen erleichtert Ihnen das Tippen.

Änderungsmethoden (Setter) / Abfragemethoden (Getter), Konstruktoren/Destruktoren, Gleichheit, relationale und Stream-Operatoren sind nur einen Klick entfernt. Wählen Sie die Felder für die Generierung sowie zahlreiche Optionen wie „generate as class members“ und „generate in-place“ aus. Nutzen Sie std::tie für die Implementierung des Operators und nach Bedarf auch für andere Optionen.

Sind bereits einige Operatoren vorhanden, schlägt Ihnen CLion vor, fehlende zu ergänzen oder bestehende zu ersetzen.

Implementieren, überschreiben oder Definitionen generieren

Die volle Leistung der Codegenerierung wird anhand Implementierungsfunktionen (Strg+I), Überschreibungsfunktionen (Strg+O) und der Generierung von Definitionen (Shift+Strg+D) deutlich.

Der Standardwert der Einstellung Generate in-place hängt von Ihrem Code ab. CLion passt sich dem Schema Ihrer Projekte an. Als Unterstützung für die häufigsten Fälle (wie u. a. die Klassen „header-only“ oder „cpp-only“), werden Heuristiken implementiert.

Refaktorierungen

CLion hilft Ihnen, die hohe Qualität Ihres Codes zu wahren, indem es eine Reihe verlässlicher Refaktorierungen zur Verfügung stellt. Anhand der Refaktorierung werden Ihre Änderungen am Code auf sichere Weise für den gesamten Bereich übernommen.

Um sich alle Refaktorierungen anzusehen, die an der aktuellen Position zur Verfügung stehen, verwenden Sie das Menü Refactor This...(drücken Sie Strg+Alt+Umschalt ).

Die Liste der Refaktorierungen umfasst:

Rename Shift+F6 – Zeichen werden umbenannt und alle Referenzen im Code automatisch für Sie korrigiert.

Change Signature Strg+F6 – Ermöglicht Ihnen, Funktionsparameter hinzuzufügen/zu entfernen/umzusortieren, den Ergebnistyp zu ändern oder den Namen der Funktion zu aktualisieren. Alle Verwendungen werden entsprechend angepasst.

Inline Strg+Alt+N – Ersetzt redundante Verwendungs-/Funktionsaufrufe der Variablen anhand des/der Initialisierungsgprogramms/Deklaration.

Extract (Funktion: Strg+Alt+M, Typedef: Strg+Alt+K, Variable: Strg+Alt+V, Parameter: Strg+Alt+P, Define: Strg+Alt+D, Konstante: Strg+Alt+C, Lambda-Parameter) – CLion analysiert hierbei den Codeblock, für den Sie das Refactoring aufgerufen haben, erkennt die In- und Out-Variablen und die Verwendungen des ausgewählten Ausdrucks und ersetzt sie durch ein neu erstelltes Konstrukt Ihrer Wahl.

Mit Pull Members Up/Down werden Member einer Klasse auf sichere Weise in eine Basisklasse/Unterklasse verschoben.

Und vieles mehr.