![]() |
Ayuda con refactorización
Hola a todos!
Gracias a los sabios consejos que me dieron en este post: https://www.clubdelphi.com/foros/showthread.php?t=94720 comencé con mucho éxito la migración y refactorización de mi humilde sistema. He avanzado mucho y el código está quedando mucho más legible y ordenado que antes. Sin embargo, en algunas ocasiones me está costando bastante separar las consultas SQL de los forms. Por ejemplo, un código como este:
Fue sencillo de separar con un simple procedimiento:
Ahora bien, cuando necesito volcar los datos recibidos de la consulta en el form no se muy bien como hacerlo. Por ejemplo, un código como este ¿cómo lo refactorizarían?
Saludos! ^\||/^\||/^\||/ |
Una manera simple es crear un Record basico para pasar los datos:
Eso queda muy bonito si en un solo archivo tienes todos tus "datos" declarados. De alli, puedes hacer una clase/interface para pasar/leer los datos: http://www.delphibasics.co.uk/Articl...Name=Interface
|
Otra opción es "separar" la parte visual de la parte de "los datos".
Igual que de entrada, has eliminado el Edit_Codigo.Text de donde tenías la consulta y lo has convertido en un parámetro, puedes hacer lo mismo con el Dataset.
De forma que esta llamada quedaría así:
Y luego podrías tener u procedimiento (en la parte voisual) que cogiera los valores del Dataset y los asignara a los campos visuales:
Y el procedimiento quedaría así (en la parte visual):
|
¡Muchas gracias a ambos! v:-)v
Había pensado en un record, pero pasándolo como parámetro. Mis conocimientos son un poco más rudimentarios, jaja. Me gustan ambas opciones. La de Germán es la más fácil de implementar con mis conocimientos actuales, pero lo de la interface me despertó curiosidad. Voy a leer un poco y veo por cual me decido. ¡Muchas gracias de nuevo a ambos por la ayuda! ||-|| |
No se si es correcto, pero lo implementé de la siguiente manera:
Leí sobre las interfaces y está muy bueno, pero necesito leer más para entender bien como usarlas. Saludos! ||-|| |
Mejor si el Dataset lo pasas como parámetro.
De esa forma el procedimiento de asignar valores no tiene que hacer referencia al módulo (queda independiente) y se podría llamar con otro dataset que estiviera en "Modulo2" (por decir algo). Aunque ahora no lo vayas a utilizar ayuda a crear piezas (procedimientos) independientes (cajas negras) y te acostumbras a trabajar así. Te evitas esta línea:
Los Interfaces son potentes y también ayudan a crear piezas "estancas". Para que te hagas una idea una Interfaz es como un contrato. Creas un contrato y todos aquellos elementos que lo usen deben cumplir ese contrato (esas normas). Pero si es cierto que no es algo "inicial". |
¡Gracias Germán, como siempre! v:-)v
Cita:
La idea es mejorar mi manera de programar, así que gracias por la explicación. ^\||/^\||/^\||/ Saludos!!!! ||-|| |
La franja horaria es GMT +2. Ahora son las 23:57:43. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi