Difference between revisions of "IDE Window: Extract Procedure/es"
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: | ||
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: | 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: | ||
"Extraer Procedimiento" busca las variables utilizadas y automáticamente crea la lista de parámetros y las variables locales. Por ejemplo: | "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: | ||
Resultado: | 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"