AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Die Delphi-IDE Refactoring-Wizard "Smart Add Parameter"
Thema durchsuchen
Ansicht
Themen-Optionen

Refactoring-Wizard "Smart Add Parameter"

Ein Thema von PeterPanino · begonnen am 2. Mai 2013 · letzter Beitrag vom 5. Mai 2013
Antwort Antwort
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#1

Refactoring-Wizard "Smart Add Parameter"

  Alt 2. Mai 2013, 21:42
Hallo! Gibt es einen Refactoring-Wizard für den Delphi Code-Editor, der folgendes macht:

Ich habe z.B. folgende Methode:
Delphi-Quellcode:
procedure TMyClass.HandleButton;
begin
  MyButton.Caption := 'Do it!';
  MyButton.Enabled := True;
  MyButton.DropDownMenu := MyPopupMenu;
end;
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):
Delphi-Quellcode:
procedure TMyClass.HandleButton(AButton: TButton);
begin
  AButton.Caption := 'Do it!';
  AButton.Enabled := True;
  AButton.DropDownMenu := MyPopupMenu;
end;
Danach setze ich den Cursor auf 'Do it!' und er macht daraus automatisch:
Delphi-Quellcode:
procedure TMyClass.HandleButton(AButton: TButton; ACaption: string);
begin
  AButton.Caption := ACaption;
  AButton.Enabled := True;
  AButton.DropDownMenu := MyPopupMenu;
end;
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.

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.
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#2

AW: Refactoring-Wizard "Smart Add Parameter"

  Alt 2. Mai 2013, 22:25
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.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#3

AW: Refactoring-Wizard "Smart Add Parameter"

  Alt 2. Mai 2013, 22:48
Das wird so nicht gehen bzw. keinen Sinn ergeben.
Natürlich ergibt das einen Sinn, weil die Methode dadurch zeitsparend generalisiert wird.

Zudem hält Delphi eine sehr komfortable Möglichkeit bereit, 'MyButton' in 'AButton' zu ändern.
Meinst du den Sync-Bearbeitungsmodus? Der besteht aus mehreren Bedienungsschritten - zu umständlich.

Dann noch den Parameter hinzufügen und fertig.
Das ist ja gerade das, was der Refactoring-Wizard mit einem Klick erledigen soll. Manuell brauchst du inklusive Implementation und Deklaration wesentlich länger. Selbst mit dem ModelMaker AddParameter-Wizard dauert es viel länger, weil man dort erst umständlich selbst den Typ des Parameters eingeben muss.

Und den Fall einbauen, das man mehr als einen Parameter hinzufügen will usw.
Der Refactoring-Dialog könnte bereits automatisch eine Check-Liste aller in der Methode vorkommenden parameterisierbaren Bezeichner und Ausdrücke und ihre Typen enthalten, z.B.:

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!
  Mit Zitat antworten Zitat
Furtbichler
(Gast)

n/a Beiträge
 
#4

AW: Refactoring-Wizard "Smart Add Parameter"

  Alt 2. Mai 2013, 23:55
Das ist ja gerade das, was der Refactoring-Wizard mit einem Klick erledigen soll.
Na dann zähl mal die Klicks.

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:
Der Refactoring-Dialog könnte bereits automatisch eine Check-Liste aller in der Methode vorkommenden parameterisierbaren Bezeichner und Ausdrücke und ihre Typen enthalten, z.B.:
...
Man müsste dann nur noch auf die Checkboxen klicken und hätte die Methode dann in einem Sekundenbruchteil refaktorisiert!
Na, dann sind es ja doch wesentlich mehr als 'ein Klick'.

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.
  Mit Zitat antworten Zitat
PeterPanino

Registriert seit: 4. Sep 2004
1.465 Beiträge
 
Delphi 10.4 Sydney
 
#5

AW: Refactoring-Wizard "Smart Add Parameter"

  Alt 3. Mai 2013, 00:27
Ich würde so ein Tool nie benötigen, weil ich vorher weiss, welche Parameter in etwa für die Methode benötigt werden
Hab ich ja geschrieben, dass man normalerweise bereits generalisierte Methoden schreibt. Ich habe aber auch geschrieben, dass man das für jene Fälle brauchen kann, wenn man etwa mittels "Methode extrahieren" eine spezielle (also nicht generalisierte) Methode erhalten hat.

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!
  Mit Zitat antworten Zitat
Benutzerbild von scrat1979
scrat1979

Registriert seit: 12. Jan 2007
Ort: Sulzbach a.d. Murr
1.029 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Refactoring-Wizard "Smart Add Parameter"

  Alt 5. Mai 2013, 17:28
Vielleicht ist ModelMaker Code Explorer was du suchst. Trial verfügbar.
Michael Kübler
  Mit Zitat antworten Zitat
Antwort Antwort

 

Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:31 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz