![]() |
Refactoring-Wizard "Smart Add Parameter"
Hallo! Gibt es einen Refactoring-Wizard für den Delphi Code-Editor, der folgendes macht:
Ich habe z.B. folgende Methode:
Delphi-Quellcode:
Nun setze ich den Cursor auf einen der Bezeichner "MyButton" und aktiviere den Refactoring-Wizard: Es erscheint ein Dialog, in dem ich einen Namen für den Parameter eingebe (AButton), sowie die Optionen "Modifier" und "Default" einstellen kann. Nach Klick auf OK hat der Refactoring-Wizard die Methode folgendermaßen modifiziert (und natürlich automatisch zugleich die entsprechende Deklaration im Interface-Teil):
procedure TMyClass.HandleButton;
begin MyButton.Caption := 'Do it!'; MyButton.Enabled := True; MyButton.DropDownMenu := MyPopupMenu; end;
Delphi-Quellcode:
Danach setze ich den Cursor auf 'Do it!' und er macht daraus automatisch:
procedure TMyClass.HandleButton(AButton: TButton);
begin AButton.Caption := 'Do it!'; AButton.Enabled := True; AButton.DropDownMenu := MyPopupMenu; end;
Delphi-Quellcode:
Usw. So ein Refactoring-Wizard wäre ungeheuer praktisch und zeitsparend! Denkbar wäre auch, dass der Refactoring-Dialog bereits alle in der Methode vorkommenden Symbole und Typen auflistet und man nur noch jeweils draufklicken muss, um diesen als Parameter einzufügen.
procedure TMyClass.HandleButton(AButton: TButton; ACaption: string);
begin AButton.Caption := ACaption; AButton.Enabled := True; AButton.DropDownMenu := MyPopupMenu; end; Bitte jetzt nicht die Antwort: "Du könntest die Methode ja gleich so generalisiert schreiben, wie du sie brauchst!". Der Grund ist nämlich der, dass man häufig eine spezielle (also nicht generalisierte) Prozedur/Methode als Ergebnis eines Extract-Method-Refactorings erhält. Sie dann zu generalisieren ist dann aber oft wieder entsprechend zeitaufwendig. |
AW: Refactoring-Wizard "Smart Add Parameter"
Refactoring ändert Code, ohne die Semantik zu ändern. Hier würde aber aus dem Zugriff auf eine Instanz ('MyButton') plötzlich ein Parameter werden. Das wird so nicht gehen bzw. keinen Sinn ergeben.
Zudem hält Delphi eine sehr komfortable Möglichkeit bereit, 'MyButton' in 'AButton' zu ändern. Dann noch den Parameter hinzufügen und fertig. Einem Refactoring-Tool müsstest Du noch mitteilen, das es die Semantik ändern soll (also MyButton=>AButton). Und den Fall einbauen, das man mehr als einen Parameter hinzufügen will usw. |
AW: Refactoring-Wizard "Smart Add Parameter"
Zitat:
Zitat:
Zitat:
Zitat:
MyButton: TButton 'Do it!': string True: Boolean MyPopupMenu: TPopupMenu Man müsste dann nur noch auf die Checkboxen klicken und hätte die Methode dann in einem Sekundenbruchteil refaktorisiert! |
AW: Refactoring-Wizard "Smart Add Parameter"
Zitat:
Also: Rechtsklick->Menü->Refactoring->Diese Instanz als Parameter einführen->Dialog-poppt-hoch (nun den Parameternamen eintippen-> Position des neuen Parameters in der Parameterliste wählen-> ??Und was passiert mit den bisherigen Aufrufen?? -> Enter. Zitat:
Also gut, Du willst also ein Tool, um die Funktionsweise eines Programms zu verändern. Klar. Für deinen speziellen Fall. Auch klar. Ich würde so ein Tool nie benötigen, weil ich vorher weiss, welche Parameter in etwa für die Methode benötigt werden- Und generell ist das nicht zu gebrauchen, denn wer will das schon: Eine (aus Sicht der Methode) globale Variable (ja ja, kann auch ein Feld, Property etc sein) durch einen Parameter ersetzen. Für Rookies schreibt man keine Tools dieser Art, das lohnt sich nicht. Imho ist der Fall auch viel zu speziell. Mein Tipp: Arbeite dich in OTA ein und schreib Dir so ein Teil. Du wirst sehen, wie 'praktisch' das ist. Und es wird die Frage beantworten, weshalb es soetwas nicht schon längst gibt. |
AW: Refactoring-Wizard "Smart Add Parameter"
Zitat:
Stell dir vor, du hast eine spezielle Methode. Dann ergibt es sich, dass du diese Methode doch in generalisierter Form benötigst (kommt immer wieder vor, auch bei sorgfältigster Planung; sag nicht, dass du das nie benötigt hast). In diesem Fall wäre ein solcher Smart Parameter Wizard sehr nützlich! |
AW: Refactoring-Wizard "Smart Add Parameter"
Vielleicht ist ModelMaker Code Explorer was du suchst. Trial verfügbar.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz