Difference between revisions of "IDE Window: Extract Procedure/es"
Line 33: | Line 33: | ||
begin | begin | ||
Una := Una + Dos; | Una := Una + Dos; | ||
− | for i:=Una to 5 do | + | for i := Una to 5 do |
begin | begin | ||
| | | | ||
Line 47: | Line 47: | ||
i: Integer; // Comentario | i: Integer; // Comentario | ||
begin | begin | ||
− | for i:=Una to 5 do begin | + | for i := Una to 5 do begin |
| | | | ||
end; | end; | ||
Line 54: | Line 54: | ||
procedure TForm1.HacerAlgo(var Una, Dos: integer); | procedure TForm1.HacerAlgo(var Una, Dos: integer); | ||
begin | begin | ||
− | Una :=Una + Dos; | + | Una := Una + Dos; |
NuevoProcedimiento(Una); | NuevoProcedimiento(Una); | ||
end;</pascal> | end;</pascal> |
Revision as of 10:37, 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"