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

From Lazarus wiki
Jump to navigationJump to search
m (Text replace - "delphi>" to "syntaxhighlight>")
m (Fixed syntax highlighting)
 
Line 5: Line 5:
  
 
 Ejemplo básico:
 
 Ejemplo básico:
<syntaxhighlight> procedure HacerAlgo;
+
<syntaxhighlight lang=pascal>
 +
procedure HacerAlgo;
 
  begin
 
  begin
 
   UsarHacerOtraCosa;
 
   UsarHacerOtraCosa;
Line 12: Line 13:
 
&nbsp;&nbsp;&nbsp;Selecciona la línea "UsarHacerOtraCosa;" y utiliza ''Extraer Procedure'' de la opción ''Refactorizar''  del menú contextual,  o desde el menú principal con  ''Editar > Extraer Procedimiento ...''; con cualquiera de ellas 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 ''Refactorizar''  del menú contextual,  o desde el menú principal con  ''Editar > Extraer Procedimiento ...''; con cualquiera de ellas 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:
  
<syntaxhighlight> procedure NuevoProcedimiento;
+
<syntaxhighlight lang=pascal>
 +
procedure NuevoProcedimiento;
 
  begin
 
  begin
 
   UsarHacerOtraCosa;
 
   UsarHacerOtraCosa;
Line 27: Line 29:
 
&nbsp;&nbsp;&nbsp;"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:
  
<syntaxhighlight> procedure TForm1.HacerAlgo(var Una, Dos: integer);
+
<syntaxhighlight lang=pascal>
 +
procedure TForm1.HacerAlgo(var Una, Dos: integer);
 
  var
 
  var
 
   i: Integer; // Comentario
 
   i: Integer; // Comentario
Line 42: Line 45:
 
&nbsp;&nbsp;&nbsp;Resultado:
 
&nbsp;&nbsp;&nbsp;Resultado:
  
<syntaxhighlight> procedure NuevoProcedimiento(const Una: integer);
+
<syntaxhighlight lang=pascal>
 +
procedure NuevoProcedimiento(const Una: integer);
 
  var
 
  var
 
   i: Integer; // Comentario
 
   i: Integer; // Comentario

Latest revision as of 10:41, 17 February 2020

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:

 procedure HacerAlgo;
 begin
   UsarHacerOtraCosa;
 end;

   Selecciona la línea "UsarHacerOtraCosa;" y utiliza Extraer Procedure de la opción Refactorizar del menú contextual, o desde el menú principal con Editar > Extraer Procedimiento ...; con cualquiera de ellas 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:

 procedure NuevoProcedimiento;
 begin
   UsarHacerOtraCosa;
 end;
 
 procedure HacerAlgo;
 begin
   NuevoProcedimiento;
 end;

   Como se puede ver "NuevoProcedimiento" se crea con las sentencias seleccionadas dentro del su cuerpo y que la selección ha 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:

 procedure TForm1.HacerAlgo(var Una, Dos: integer);
 var
   i: Integer; // Comentario
 begin
   Una := Una + Dos;
   for i := Una to 5 do
     begin
      |
     end;
 end;

   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:

 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;

   Como se puede ver la variable i ha sido movida a NuevoProcedimiento (Nota: incluyendo el comentario) lo mismo que Una.

   Limitaciones: Pascal es un potente lenguaje, pero no esperes que funcione correctamente con cualquier código. Limitaciones actuales/Cosas por hacer (ToDos):

  • ¿Comprobar los límites de un if? (check if selection bounds on statement bounds)
  • Sentencias "with"