Difference between revisions of "IDE Window: Extract Procedure/es"

From Lazarus wiki
Jump to navigationJump to search
Line 2: Line 2:
 
[[category:Castellano]][[category:Español]]
 
[[category:Castellano]][[category:Español]]
  
   Resumen: "Extraer Procedimiento" toma las sentencias pascal seleccionadas y crea un nuevo procedimiento o método con ese código. Esta herramienta es útil para dividir procedimientos muy grandes, o para crear fácilmente un nuevo procedimiento a partir de algo de código.
+
   Resumen: "Extraer Procedimiento" toma las sentencias pascal seleccionadas y crea con ellas un nuevo procedimiento o método, situándolas en el cuerpo del mismo. Esta herramienta es útil para dividir procedimientos muy grandes, o para crear fácilmente un nuevo procedimiento a partir de algo de código.
  
 
 Ejemplo básico:
 
 Ejemplo básico:
Line 10: Line 10:
 
  end;</pascal>
 
  end;</pascal>
  
&nbsp;Selecciona la línea "UsarHacerOtraCosa;" y utiliza ''Extraer Procedure'' de la opción ''Refactoring'' del menú contextual. Aparece un [http://wiki.lazarus.freepascal.org/images/7/78/Lazarus_IDE_Extraer_Procedimiento.png diálogo] en el que se puede seleccionar el nombre y el tipo del procedimiento que se creará. En nuestro caso el resultado será este:
+
&nbsp;&nbsp;&nbsp;Selecciona la línea "UsarHacerOtraCosa;" y utiliza ''Extraer Procedure'' de la opción ''Refactoring'' del menú contextual. Aparece un [http://wiki.lazarus.freepascal.org/images/7/78/Lazarus_IDE_Extraer_Procedimiento.png diálogo] en el que se puede seleccionar el nombre y el tipo del procedimiento que se creará. En nuestro caso el resultado será este:
  
 
<pascal> procedure NuevoProcedimiento;
 
<pascal> procedure NuevoProcedimiento;
Line 23: Line 23:
 
</pascal>
 
</pascal>
  
&nbsp;Como se puede ver "NuevoProcedimiento" se crea con las sentencias seleccionadas dentro del su cuerpo y que la selección a sido reemplazada por una llamada a "NuevoProcedimiento".
+
&nbsp;&nbsp;&nbsp;Como se puede ver "NuevoProcedimiento" se crea con las sentencias seleccionadas dentro del su cuerpo y que la selección a sido reemplazada por una llamada a "NuevoProcedimiento".
  
 
====Variables locales y parametros====
 
====Variables locales y parametros====
"Extraer Procedimiento" busca las variables utilizadas y automáticamente crea la lista de parámetros y las variables locales. Por ejemplo:
+
&nbsp;&nbsp;&nbsp;"Extraer Procedimiento" busca las variables utilizadas y automáticamente crea la lista de parámetros y las variables locales. Por ejemplo:
  
 
<pascal> procedure TForm1.HacerAlgo(var Una, Dos: integer);
 
<pascal> procedure TForm1.HacerAlgo(var Una, Dos: integer);
Line 39: Line 39:
 
  end;</pascal>
 
  end;</pascal>
  
Seleciona el bucle ''for'' y crea, como antes, un procedimiento "NuevoProcedimiento". La variable local ''i'' se utiliza únicamente en la selección, por ello se mueve al nuevo procedimiento. La variable ''Una'' se utiliza también en el resto del código y por ello es transformada en un parámetro.
+
&nbsp;&nbsp;&nbsp;Selecciona el bucle ''for'' y crea, como antes, un procedimiento "NuevoProcedimiento". La variable local ''i'' se utiliza únicamente en la selección, por ello se mueve al nuevo procedimiento. La variable ''Una'' se utiliza también en el resto del código y por ello es transformada en un parámetro.
  
Resultado:
+
&nbsp;&nbsp;&nbsp;Resultado:
  
<pascal>
+
<pascal> procedure NuevoProcedimiento(const Una: integer);
procedure NewProc(const Erni: integer);
 
 
  var
 
  var
   i: Integer; // Comment
+
   i: Integer; // Comentario
 
  begin
 
  begin
   for i:=Erni to 5 do begin
+
   for i:=Una to 5 do begin
 
   |
 
   |
 
   end;
 
   end;
 
  end;
 
  end;
 
   
 
   
  procedure TForm1.DoSomething(var Erni, Bert: integer);
+
  procedure TForm1.HacerAlgo(var Una, Dos: integer);
 
  begin
 
  begin
   Erni:=Erni+Bert;
+
   Una :=Una + Dos;
   NewProc(Erni);
+
   NuevoProcedimiento(Una);
  end;
+
  end;</pascal>
</pascal>
 
  
You can see "i" was moved to the new procedure (Note: including its comment) and Erni.
+
&nbsp;&nbsp;&nbsp;You can see "i" was moved to the new procedure (Note: including its comment) and Erni.
  
Limitations:<br>
+
&nbsp;&nbsp;&nbsp;Limitations:<br>
Pascal is a very powerful language, so don't expect it will work with every code. Current limits/ToDos:
+
&nbsp;&nbsp;&nbsp;Pascal is a very powerful language, so don't expect it will work with every code. Current limits/ToDos:
 
* check if selection bounds on statement bounds
 
* check if selection bounds on statement bounds
 
* "with" statements
 
* "with" statements

Revision as of 10:26, 3 July 2008

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

   Resumen: "Extraer Procedimiento" toma las sentencias pascal seleccionadas y crea con ellas un nuevo procedimiento o método, situándolas en el cuerpo del mismo. Esta herramienta es útil para dividir procedimientos muy grandes, o para crear fácilmente un nuevo procedimiento a partir de algo de código.

 Ejemplo básico: <pascal> procedure HacerAlgo;

begin
  UsarHacerOtraCosa;
end;</pascal>

   Selecciona la línea "UsarHacerOtraCosa;" y utiliza Extraer Procedure de la opción Refactoring del menú contextual. Aparece un diálogo en el que se puede seleccionar el nombre y el tipo del procedimiento que se creará. En nuestro caso el resultado será este:

<pascal> procedure NuevoProcedimiento;

begin
  UsarHacerOtraCosa;
end;

procedure HacerAlgo;
begin
  NuevoProcedimiento;
end;

</pascal>

   Como se puede ver "NuevoProcedimiento" se crea con las sentencias seleccionadas dentro del su cuerpo y que la selección a sido reemplazada por una llamada a "NuevoProcedimiento".

Variables locales y parametros

   "Extraer Procedimiento" busca las variables utilizadas y automáticamente crea la lista de parámetros y las variables locales. Por ejemplo:

<pascal> procedure TForm1.HacerAlgo(var Una, Dos: integer);

var
  i: Integer; // Comentario
begin
  Una := Una + Dos;
  for i:=Una to 5 do
    begin
     |
    end;
end;</pascal>

   Selecciona el bucle for y crea, como antes, un procedimiento "NuevoProcedimiento". La variable local i se utiliza únicamente en la selección, por ello se mueve al nuevo procedimiento. La variable Una se utiliza también en el resto del código y por ello es transformada en un parámetro.

   Resultado:

<pascal> procedure NuevoProcedimiento(const Una: integer);

var
  i: Integer; // Comentario
begin
  for i:=Una to 5 do begin
  |
  end;
end;

procedure TForm1.HacerAlgo(var Una, Dos: integer);
begin
  Una :=Una + Dos;
  NuevoProcedimiento(Una);
end;</pascal>

   You can see "i" was moved to the new procedure (Note: including its comment) and Erni.

   Limitations:
   Pascal is a very powerful language, so don't expect it will work with every code. Current limits/ToDos:

  • check if selection bounds on statement bounds
  • "with" statements