Überblick zum Umbenennen von Symbolen (Delphi)

Aus RAD Studio
Wechseln zu: Navigation, Suche

Nach oben zu Refactoring von Anwendungen - Index


Mit dieser Funktion benennen Sie einen Bezeichner und alle Referenzen auf diesen Bezeichner um. Ein Bezeichner kann umbenannt werden, wenn sich seine Originaldeklaration in Ihrem Projekt oder in einem Projekt befindet, von dem Ihr Projekt abhängig ist, und dieses Projekt in derselben geöffneten Projektgruppe vorhanden ist. Typnamen, Methodennamen, Variablen, Felder und andere Bezeichner können umbenannt werden. In Delphi können mit Generics verwendete Bezeichner umbenannt werden.

Folgende Regeln sind beim Umbenennen von Symbolen mit der Refactoring-Engine zu beachten:

  • Ein Bezeichner kann nicht in ein Schlüsselwort umbenannt werden.
  • Ein Bezeichner kann nur in denselben Bezeichner umbenannt werden, wenn sich die Groß-/Kleinschreibung unterscheidet.
  • Ein Bezeichner kann in einem abhängigen Projekt nur dann umbenannt werden, wenn das Projekt mit dem ursprünglichen Deklarationsbezeichner geöffnet ist.
  • Vom Compiler importierte Symbole können nicht umbenannt werden.
  • Eine überschriebene Methode, deren Basismethode in einer Klasse deklariert ist, die nicht Teil des Projekts ist, kann nicht umbenannt werden.
  • Sie können keine Konstruktoren oder Destruktoren umbenennen.
  • Wenn beim Refactoring ein Fehler auftritt, kann die Engine die Änderung nicht durchführen. Es ist zum Beispiel nicht möglich, einem Bezeichner einen Namen zuzuweisen, der in demselben Deklarationsbereich bereits vergeben ist. Soll der Bezeichner trotzdem diesen Namen erhalten, müssen Sie vorher den Bezeichner umbenennen, der gegenwärtig diesen Namen trägt, und danach das Refactoring aktualisieren. Sie können das Refactoring auch rückgängig machen und einen neuen Namen angeben. Die Refactoring-Engine sucht über Bereichsgrenzen hinweg nach einem Bezeichner mit demselben Namen. Wird ein Bezeichner mit diesem Namen gefunden, gibt die Engine eine Warnung aus.
  • Beim Umbenennen von mit Generics verwendeten Bezeichnern können Sie keine Typparameter umbenennen. Das bedeutet, dass Sie bei der folgenden Deklaration:
     type
       List<Item> = class
       ...
       end;

den Bezeichner Item (das ist der Typparameter) nicht umbenennen können, aber Sie können den Bezeichner List umbenennen.

Umbenennen von Methoden

Das Umbenennen von Methoden erfolgt auf die gleiche Weise wie bei jedem anderen Bezeichner. Wenn Sie im Quelltext-Editor einen Prozedurennamen auswählen, können Sie ihn mit dem Befehl Refactor > Umbenennen umbenennen. Ist die Prozedur überladen, benennt die Refactoring-Engine nur die überladene Prozedur um und ruft nur diese auf. Das folgende Codefragment veranschaulicht diese Regel:

procedure Foo; overload;
procedure Foo(A:Integer); overload;
Foo();
Foo;
Foo(5);

Wenn Sie den Namen der ersten Foo-Prozedur in diesem Beispiel ändern, benennt die Engine das erste, dritte und vierte Element um.

Wenn Sie den Namen eines überschriebenen Bezeichners ändern, benennt die Engine alle Basisdeklarationen und alle abgeleiteten Deklarationen um, d. h. der ursprüngliche virtuelle Bezeichner sowie alle vorhandenen überschriebenen Symbole. Das folgende Codefragment veranschaulicht diese Regel:

TFoo = class
  procedure Foo; virtual;
  end;
TFoo2 = class(TFoo)
  procedure Foo; override;
  end;
TFoo3 = class(TFoo)
  procedure Foo; override;
  end;
TFoo4 = class(TFoo3)
  procedure Foo; override;
  end;

Wenn Sie Foo umbenennen, werden alle Instanzen von Foo umbenannt.

Siehe auch