In Anbetracht dieses Threads
http://www.delphipraxis.net/internal...=340042#340042
dachte ich mir, dass ich mein eigenes kleines Refactor Tool als Beta mal veröffentliche, obwohl noch nicht ganz fertig.
Ich denke aber, es wird vielen gefallen. Und weil Robert_G immer so gegen Delphi haut in letzter Zeit, musste ich was unternehmen
Was mich in letzter Zeit in Delphi ( Pascal) immer mehr gestört hat, dass ich ständig nach oben und nach unten scrollen muss, um im interface Teil alle mögliche Dinge zu deklarieren.
Da es auch hier schon diskutiert wurde, dass das die doppelte Deklaration ein großer Nachteil für Pascal sein soll, dachte ich mir, es geht auch anders.
XRefactor ist erstmal Freeware für den nichtkommerziellen Gebrauch. Was ich weiterhin damit mache, weiss ich noch nicht
Sinn des ganzen ist, nicht ständig in den Interface Teil blättern zu müssen.
Programmieren statt scrollen hieß das Motto.
Ich programmiere im Implementations Teil, und will da auch bleiben. Flüssiges Arbeiten ist mir sehr wichtig.
Wichtig zu wissen ist, dass ich keinen Pascal Parser verwendet habe( obwohl im Internet frei verfügbare zu haben sind)
Mich stört in Delph sowieso immer, dass die Codevervollständigung nicht funktioniert, nur weil mal ein kleiner Syntaxfehler im Code ist. Das ganze ist zeilenbasierend.
Es gibt im Programm einige Grundbefehle, die man wissen muss, ansonsten ist die Software sehr einfach.
Zu erreichen ist der XRefactor über STRG+L in der Delphi
IDE ( ohne Sinn, einfach weil es gut zu erreichen ist mit einem 10 FingerSystem)
Kleines zusätzliches Feature im XRefactor: mit STRG+W wird die GANZE Zeile des Quelltextes , in der sich der aktuelle Cursor befindet, automatisch in die Zwischenablage kopiert, ohne erst die ganze Zeile markieren zu müssen um danach STRG+C zu drücken. Anführende Leerzeichen werden entfernt dabei.
So, nun zu den Refactoring Möglichkeiten.
erstmal zu den Befehlen:
N - steht für innnnnnnnnnnnnnnnterface
M - steht für immmmmmmmmmmmmmmmmplementation
I - für priiiiiiiiiivate
u - für puuuuuuuuuublic
si - ssssssssstrict priiiiiiivate
o - proooooootected
so - strict protected
pu - published
l - lokal
np - new procedure ( Methode ) - Sinn erklär ich später
nf - new function ( Methode)
c - CHANGE !
einfachster Fall:
UnitDeklaration:
--------------------
ich programmiere, und brauche die
Unit math
Ich bin in Zeile 7690 und müsste nun nach oben blättern, das will ich nicht
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
math
end;
ich gebe also im Code math ein, drücke STRG+L und gebe dort "N" ein -> Return.
Die Uses math wird automatische im Interface Teil unter den Uses Deklarationen eingefügt.
Wenn man "M" eingibt, dann wird die Uses im Implementationsteil eingefügt.
MethodenDeklarationen:
---------------------------
Code zum eingeben ( immer im Implementationsteil !!!)
function TForm1.meineNeueFunction( str : string ) : boolean;
STRG+L .. dann habe ich die Auswahl, ob ich diese Funktion in private oder public oder sonstwo eintragen möchte.
ich wähle also "i" -> Bestätigen mit Return;
Die Methode wird in TForm1 im private Teil eingetragen, ist der private Teil noch nicht vorhanden, wird er automatisch hinzugefügt.
der Function wird automatisch "begin" und "end;" hinzugefügt.
so .. jetzt programmiere ich, jetzt fällt mir ein dass ich doch andere Parameter brauche:
ich änder also die Function um in:
function TForm1.meineNeueFunction( var str; nochEinString : string ) : Integer;
Wenn ich die Zeile geändert habe, wird mit dem Befehl "C" diese Änderung automatisch in der ObjectDeklaration übernommen.
Dabei kann auch function in procedure geändert werden. Das einzige was belassen werden muss ist der Name zum finden: TForm1.meineNeueFunction.
Das Umbenennen der Methode selber macht Delphi2005 sowieso viel bessser !
(Tipp STRG+U (für umbenennen) mit GExperts dafür einrichten) .. vielleicht kommt dieser Shortcut auch noch in den XRefactor rein)
Anstatt STRG+L zu drücken, um danach den Befehl in das Edit Feld einzugeben, kann man auch alterantiv eingeben:
function TForm1.meineNeueFunction( var str; nochEinString : string ) : Integer;u
zu beachten ist das letzte "u", was dem Befehl entspricht .. wenn man nun STRG+L drückt, wird das refactoring automatisch durchgeführt,
und in diesem Falle die Methode unter public eingetragen.
Einschränkungen: im Moment funktioniert die Methodendeklaration nur mit EINzeiligen Function- Deklarationen.
Funktion -Deklarationen über mehrere Zeilen werden noch nicht untersützt, override, virtual Unterstützung fehlt auch noch teilweise. Müsste man im Moment noch per Hand ergänzen.
Felder:
----------
Code: FMeinNeuesFeld : TMeinEigenerTyp;
auch eine Feld Deklaration ist möglich, analog zur Methodendeklaration.
In der Beta bleibt der Eintrag im Quelltext leider noch stehen, wird aber noch
Für Faule:
-------------------
ich habe ein Object deklariert
TDasIstMalEinGanzLangerNameFuerEinObject = class(TObject)
ich programmier also nun fleissig und müsste ja nun um eine neue procedure zu deklarieren dieses lage Wort von der Klasse eingeben.
Mit dem Befehl 'NF' oder 'NP' wird automatisch folgende Zeile erzeugt: ( es wird die darüberliegende Methode dafür gesucht und hergenommen)
function TDasIstMalEinGanzLangerNameFuerEinObject.
Nun kann ich die Parameter eintragen und die function wie oben schon beschrieben in der Deklaration der Klasse eintragen lassen.
es könnte sein, dass der XRefactor im Moment noch "langsam" ist, das liegt daran, dass ich den ganzen Quelltext in eine Stringlist lade, dort bearbeite und wieder in die Delphi
IDE einfüge. Das muss ich noch ändern, dass nur die geänderten Zeilen in die
IDE eingefügt werden.
Die Macken des Tools würden mich natürlich sehr interessieren:
Bitte Mail hier im Board oder an
XRefactor@gmx.de
das
Package für Delphi2005 findet ihr im Anhang.
Zu installieren ist das ganze natürlich über den Menüpunkt Komponente - Packages installiere, ich hoffe, das funktioniert auch so wie geplant
Viel Spass damit !
Phantasie ist etwas, was sich manche Leute gar nicht vorstellen können.