IDE Window: Extract Procedure/de

From Free Pascal wiki
Revision as of 10:10, 14 May 2006 by Swen (talk | contribs)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigationJump to search

Deutsch (de) English (en) español (es) suomi (fi) français (fr) русский (ru) slovenčina (sk) 中文(中国大陆)‎ (zh_CN)

Kurz gefasst: "Prozedur extrahieren" nimmt einige ausgewählte Pascal Anweisungen und erzeugt eine neue Prozedur/Methode aus diesem Code. Dieses Werkzeug ist hilfreich um große Prozeduren aufzuteilen oder um leicht eine neue Prozedur aus einigem Code zu erzeugen.

Einfaches Beispiel:

procedure DoSomething;
begin
  CallSomething;
end;

Markieren sie die Zeile "CallSomething;" und wählen "Prozedur extrahieren". Ein Dialog erscheint und sie können den Typ und Namen der zu erstellenden Prozedur wählen. Zum Beispiel: procedure, "NewProc". Ergebnis:

procedure NewProc;
begin
  CallSomething;
end;

procedure DoSomething;
begin
  NewProc;
end;

Sie können sehen, daß die neue Prozedur "NewProc" erzeugt wurde mit der Abgrenzung als Rumpf und der alte Code durch einen Aufruf ersetzt wurde.

Lokale Variablen und Parameter:
"Prozedur extrahieren" scannt nach verwendeten Variablen und erzeugt automatisch die Parameterliste und lokalen Variablen. Beispiel:

procedure TForm1.DoSomething(var Erni, Bert: integer);
var
  i: Integer; // Kommentar
begin
  Erni:=Erni+Bert;
  for i:=Erni to 5 do begin
  |
  end;
end;

Markieren sie die for Schleife und erezugen eine neue Prozedur "NewProc". Die lokale Variable i wird nur in der Auswahl verwendet, daher wird sie in die neue Prozedur verschoben. Erni wird auch im übrigen Code verwendet, daher wird er ein Parameter.

Ergebnis:

procedure NewProc(const Erni: integer);
var
  i: Integer; // Kommentar
begin
  for i:=Erni to 5 do begin
  |
  end;
end;

procedure TForm1.DoSomething(var Erni, Bert: integer);
begin
  Erni:=Erni+Bert;
  NewProc(Erni);
end;

Sie können sehen, daß "i" in die neue Prozedur verschoben wurde (Anmerkung: inklusive des Kommentars) und Erni.

Grenzen:
Pascal ist eine sehr mächtige Sprache. Erwarten sie daher nicht, daß es mit jedem Code funktioniert. Aktuelle Limits/ToDos:

  • prüfen ob die Auswahl bounds on statement bounds
  • "with" Anweisungen