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

From Lazarus wiki
Jump to navigationJump to search
Line 58: Line 58:
 
  end;</pascal>
 
  end;</pascal>
  
&nbsp;&nbsp;&nbsp;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''.
  
&nbsp;&nbsp;&nbsp;Limitations:<br>
+
&nbsp;&nbsp;&nbsp;Limitaciones:<br>
&nbsp;&nbsp;&nbsp;Pascal is a very powerful language, so don't expect it will work with every code. Current limits/ToDos:
+
&nbsp;&nbsp;&nbsp;Pascal es un potente lenguaje, por lo que no esperes que funcione correctamente con cualquier código. Limitaciones actuales/''ToDos'':
* check if selection bounds on statement bounds
+
* ¿Comprobar los límites de un if? (check if selection bounds on statement bounds)
* "with" statements
+
* Sentencias "with"

Revision as of 10:35, 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>

   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, por lo que no esperes que funcione correctamente con cualquier código. Limitaciones actuales/ToDos:

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