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

From Lazarus wiki
Jump to navigationJump to search
m (Fixed syntax highlighting)
 
(12 intermediate revisions by 2 users not shown)
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 utilidad
+
   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.
takes some selected pascal statements and creates a new procedure/method from this code. Esta herramienta es útil para dividir procedimientos muy grandes, o para crear fácilmente un nuevo procedimiento a partir de algo de código.
 
   Por ejemplo:
 
  
Ejemplo básico:
+
 Ejemplo básico:
<pascal> procedure DoSomething;
+
<syntaxhighlight lang=pascal>
 +
procedure HacerAlgo;
 
  begin
 
  begin
   CallSomething;
+
   UsarHacerOtraCosa;
  end;</pascal>
+
  end; </syntaxhighlight>
  
Select the line "CallSomething;" and do Extract Proc. A dialog pop ups and
+
&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:
you can select the type and name of the procedure to create. For example:
 
procedure, "NewProc". Result:
 
  
<pascal>
+
<syntaxhighlight lang=pascal>
  procedure NewProc;
+
  procedure NuevoProcedimiento;
 
  begin
 
  begin
   CallSomething;
+
   UsarHacerOtraCosa;
 
  end;
 
  end;
 
   
 
   
  procedure DoSomething;
+
  procedure HacerAlgo;
 
  begin
 
  begin
   NewProc;
+
   NuevoProcedimiento;
  end;
+
  end; </syntaxhighlight>
</pascal>
 
  
You can see, that the new procedure "NewProc" was created with the selection
+
&nbsp;&nbsp;&nbsp;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".
as body and the old code was replaced by a call.
 
  
Local Variables and Parameters:<br>
+
====Variables locales y parametros====
"Extract Proc" scans for used variables and automatically creates the
+
&nbsp;&nbsp;&nbsp;"Extraer Procedimiento" busca las variables utilizadas y automáticamente crea la lista de parámetros y las variables locales. Por ejemplo:
parameter list and local variables. Example:
 
  
<pascal>
+
<syntaxhighlight lang=pascal>
  procedure TForm1.DoSomething(var Erni, Bert: integer);
+
  procedure TForm1.HacerAlgo(var Una, Dos: integer);
 
  var
 
  var
   i: Integer; // Comment
+
   i: Integer; // Comentario
 
  begin
 
  begin
   Erni:=Erni+Bert;
+
   Una := Una + Dos;
   for i:=Erni to 5 do begin
+
   for i := Una to 5 do
  |
+
    begin
  end;
+
      |
  end;
+
    end;
</pascal>
+
  end;</syntaxhighlight>
  
Select the for loop and create a new Procedure "NewProc". The local variable i is only used in the selection, so it will be moved to the new procedure. Erni is also used in the remaining code, so it will become a parameter.
+
&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.
  
Result:
+
&nbsp;&nbsp;&nbsp;Resultado:
  
<pascal>
+
<syntaxhighlight lang=pascal>
  procedure NewProc(const Erni: integer);
+
  procedure NuevoProcedimiento(const Una: 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;</syntaxhighlight>
</pascal>
 
  
You can see "i" was moved to the new procedure (Note: including its comment) and Erni.
+
&nbsp;&nbsp;&nbsp;Como se puede ver la variable ''i'' ha sido movida a ''NuevoProcedimiento'' (Nota: incluyendo el comentario) lo mismo que ''Una''.
  
Limitations:<br>
+
&nbsp;&nbsp;&nbsp;'''Limitaciones''': Pascal es un potente lenguaje, pero no esperes que funcione correctamente con cualquier código. Limitaciones actuales/Cosas por hacer (''ToDos''):
Pascal is a very powerful language, so don't expect it will work with every code. Current limits/ToDos:
+
* ¿Comprobar los límites de un if? (check if selection bounds on statement bounds)
* check if selection bounds on statement bounds
+
* Sentencias "with"
* "with" statements
 

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"