Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Die Delphi-IDE (https://www.delphipraxis.net/62-die-delphi-ide/)
-   -   Refactoring-Funktion für Encapsulation? (https://www.delphipraxis.net/143830-refactoring-funktion-fuer-encapsulation.html)

TheJeed 24. Nov 2009 11:26


Refactoring-Funktion für Encapsulation?
 
Hallo zusammen!

Ich bin durch meine Arbeit mit Netbeans inzwischen schon ganz schön verwöhnt. Die von mir am häufigsten benutzte Funktion ist das Encapsulation-Refactoring. Das nimmt einem eine ziemlich nervige Arbeit ab: Das Erstellen von Getter- und Settermethoden für ein Klassenattribut.

Nun frage ich mich, ob Delphi(2009) eine entsprechende Funktion auch mitbringt, bzw. ob es irgendeine Erweiterung für die IDE gibt, mit der man diese nachrüsten kann.

Vielen Dank :cheers:

DeddyH 24. Nov 2009 12:47

Re: Refactoring-Funktion für Encapsulation?
 
Folgender Quelltext - handgeschrieben:
Delphi-Quellcode:
  TMyClass = class
  public
    property Wuppdi: integer read GetWuppdi write SetWuppdi;
  end;
Dann STRG-SHIFT-C drücken, Ergebnis:
Delphi-Quellcode:
  TMyClass = class
  private
    function GetWuppdi: integer;
    procedure SetWuppdi(const Value: integer);
  published
  public
    property Wuppdi: integer read GetWuppdi write SetWuppdi;
  end;

...

implementation

...

function TMyClass.GetWuppdi: integer;
begin

end;

procedure TMyClass.SetWuppdi(const Value: integer);
begin

end;

Codewalker 24. Nov 2009 12:55

Re: Refactoring-Funktion für Encapsulation?
 
Ja, aber:

Wenn man keinen Getter braucht, reicht auch einfach ein
Delphi-Quellcode:
{...}
property Test: Integer;
Und mit Strg+Shift+C bekommt man den Setter wie oben und zusätzlich ein Read aus einer privaten Variable FTest: Integer.

Unschönheit: Delphi ergänzt immer ein published. Warum ist mir schleierhaft, weil man das für die Funktion ja nicht immer braucht.

DeddyH 24. Nov 2009 13:22

Re: Refactoring-Funktion für Encapsulation?
 
Das seh ich aber nicht als "aber", ich hatte extra einen Getter definiert, damit Delphi etwas mehr zu tun hat ;)

TheJeed 24. Nov 2009 13:25

Re: Refactoring-Funktion für Encapsulation?
 
Suhuuuuper! Danke! Toll! :hello: Das rettet mir nicht nur diesen Tag...

Medium 24. Nov 2009 13:35

Re: Refactoring-Funktion für Encapsulation?
 
Das gibts sogar schon mindestens seit Delphi 7 (bei früheren nicht probiert), als Java noch am komfortabelsten in Plaintexteditoren geschrieben wurde :mrgreen:

TheJeed 24. Nov 2009 13:41

Re: Refactoring-Funktion für Encapsulation?
 
Ich hab halt da gesucht, wo ich es in Netbeans finden konnte: im Refactoring-Menü. Mir ist nicht in den Sinn gekommen, dass es dafür ne spezielle Tastenkombination geben könnte. Wer weiß, was mir da noch so für Funktionsperlen entgangen sind...

TheJeed 24. Nov 2009 13:59

Re: Refactoring-Funktion für Encapsulation?
 
Hmm, ein wenig Genörgel gibt' trotzdem noch. Wo ich in Netbeans nach Ausführung des Kommandos im "Standardfall" nichts mehr zu tun habe, muss ich unter Delphi diesen erstmal implementieren und beispielsweise aus
Delphi-Quellcode:
procedure TMyClass.SetWuppdi(const Value: integer);
begin
 
end;
das hier
Delphi-Quellcode:
procedure TMyClass.SetWuppdi(const Value: integer);
begin
 Wuppdi:=Value;
end;
machen.

Sherlock 24. Nov 2009 14:01

Re: Refactoring-Funktion für Encapsulation?
 
Deswegen ist Java auch ein Dialekt für Warmduscher :P


:duck:
Sherlock

mleyen 24. Nov 2009 14:10

Re: Refactoring-Funktion für Encapsulation?
 
Delphi weiß in DeddyH´s Fall ja auch nicht, das du mit einer Variablen arbeiten willst.

Sag der Delphi-IDE, das du diese benötigst und er tut´s auch:
Delphi-Quellcode:
type
  TMyClass = class
  public
    property Wuppdi: integer read FWuppdi write setWuppdi;
  end;
([hust]btw: wer braucht schon getter[/hust]) :wink:


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.
Seite 1 von 2  1 2      

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