Difference between revisions of "IDE Window: Extract Procedure/es"
m (Fixed syntax highlighting) |
|||
(One intermediate revision by one other user not shown) | |||
Line 5: | Line 5: | ||
Ejemplo básico: | Ejemplo básico: | ||
− | < | + | <syntaxhighlight lang=pascal> |
+ | procedure HacerAlgo; | ||
begin | begin | ||
UsarHacerOtraCosa; | UsarHacerOtraCosa; | ||
− | end; </ | + | end; </syntaxhighlight> |
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 lang=pascal> |
+ | procedure NuevoProcedimiento; | ||
begin | begin | ||
UsarHacerOtraCosa; | UsarHacerOtraCosa; | ||
Line 20: | Line 22: | ||
begin | begin | ||
NuevoProcedimiento; | NuevoProcedimiento; | ||
− | end; </ | + | end; </syntaxhighlight> |
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". | 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". | ||
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 lang=pascal> |
+ | procedure TForm1.HacerAlgo(var Una, Dos: integer); | ||
var | var | ||
i: Integer; // Comentario | i: Integer; // Comentario | ||
Line 36: | Line 39: | ||
| | | | ||
end; | end; | ||
− | end;</ | + | end;</syntaxhighlight> |
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. | 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. | ||
Line 42: | Line 45: | ||
Resultado: | Resultado: | ||
− | < | + | <syntaxhighlight lang=pascal> |
+ | procedure NuevoProcedimiento(const Una: integer); | ||
var | var | ||
i: Integer; // Comentario | i: Integer; // Comentario | ||
Line 55: | Line 59: | ||
Una := Una + Dos; | Una := Una + Dos; | ||
NuevoProcedimiento(Una); | NuevoProcedimiento(Una); | ||
− | end;</ | + | end;</syntaxhighlight> |
Como se puede ver la variable ''i'' ha sido movida a ''NuevoProcedimiento'' (Nota: incluyendo el comentario) lo mismo que ''Una''. | Como se puede ver la variable ''i'' ha sido movida a ''NuevoProcedimiento'' (Nota: incluyendo el comentario) lo mismo que ''Una''. |
Latest revision as of 09: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"