KBDoctor: Para que sirve IN: OUT: en los parámetros GeneXus?
Hola Enrique,
Soy un programador de Genexus y estoy intentando pasar una aplicacion de Gx 9.0 en vb con dbms iseries a Gx 9.0 en .net en win
Como voy teniendo algunos problemas que se solucionan con cambios parches de artech estoy invenstigando Gx X Ev 1 RC que ya esta en win en .net
Una de las herramientas que aparecen en Gx X es KBDoctor y una de sus opciones es ver los parm que estan sin in , out, inout
Nosotros en nuestra aplicacion no tenemos en todos los atributos/variables del parm puesto in,out o inout . ¿es necesario o conveniente? ¿existe alguna herramienta para que me rellene los parm con lo que debe ?
Gracias
Soy un programador de Genexus y estoy intentando pasar una aplicacion de Gx 9.0 en vb con dbms iseries a Gx 9.0 en .net en win
Como voy teniendo algunos problemas que se solucionan con cambios parches de artech estoy invenstigando Gx X Ev 1 RC que ya esta en win en .net
Una de las herramientas que aparecen en Gx X es KBDoctor y una de sus opciones es ver los parm que estan sin in , out, inout
Nosotros en nuestra aplicacion no tenemos en todos los atributos/variables del parm puesto in,out o inout . ¿es necesario o conveniente? ¿existe alguna herramienta para que me rellene los parm con lo que debe ?
Gracias
Respuesta:
Es importante poner si los parametros son de in o out: para evitar que no se modifiquen por error:
Genexus controla que los parametros de entrada no se modifiquen (queriendo o sin querer) en el codigo del procedimiento. Tambien controla que se asigne algun valor a los parametros que son de salida.
En el caso de java (se da menos en .NET, pero tambien pasa) da muchos errores si se llama a un objeto que modifica parametros, y los mismos estan en la pantalla. Esto es porque si el valor se usa en la pantalla y tambien en un evento AfterTrn, el programa destruye el control de la pantalla y despues como el parametro tambien es de salida lo quiere actualizar, y da el error WidgetIsDisposed.
Tambien el codigo generado es mejor (mas corto) en el caso que los parametros con in/out. En el caso que tengas webservices, es muy recomendable que los uses, pues viaja menos informacion por la red, haciendolos mas rapidos.
No hay una forma automatica de saber que parametros son de entrada o de salida, por lo que el cambio deberias hacerlo en forma manual. En general, lo que conviene hacer es poner los parametros como de entrada y esperar que GX se queje que se esta actualizando alguno de ellos y arreglarlo. Despues HAY QUE PROBAR MUCHO..
Genexus controla que los parametros de entrada no se modifiquen (queriendo o sin querer) en el codigo del procedimiento. Tambien controla que se asigne algun valor a los parametros que son de salida.
En el caso de java (se da menos en .NET, pero tambien pasa) da muchos errores si se llama a un objeto que modifica parametros, y los mismos estan en la pantalla. Esto es porque si el valor se usa en la pantalla y tambien en un evento AfterTrn, el programa destruye el control de la pantalla y despues como el parametro tambien es de salida lo quiere actualizar, y da el error WidgetIsDisposed.
Tambien el codigo generado es mejor (mas corto) en el caso que los parametros con in/out. En el caso que tengas webservices, es muy recomendable que los uses, pues viaja menos informacion por la red, haciendolos mas rapidos.
No hay una forma automatica de saber que parametros son de entrada o de salida, por lo que el cambio deberias hacerlo en forma manual. En general, lo que conviene hacer es poner los parametros como de entrada y esperar que GX se queje que se esta actualizando alguno de ellos y arreglarlo. Despues HAY QUE PROBAR MUCHO..
Eu acho que estas declarações IN e OUT deveriam serem obrigatórias ou configuráveis se serão obrigatórias ou não.
ResponderBorrarEm Programadores novos é comum os erros ao esquecê-los declará-los.
Parâmetros nomeáveis e opcionais também seriam o ideal ..
Abraço e parabéns pelo Artigo.
Ricardo
Ricardo:
ResponderBorrarA mi tambien me gustaria contar con esta sintaxis (in/out) como obligatoria.
Los parametros opcionales o por nombre, estaria bueno para ganar flexibilidad.
Enrique
Otro motivo por el que es bueno tener identificados los parámetros con in y out, es para darle más significado a la regla parm.
ResponderBorrarPara el que va a invocar un procedimiento, no es lo mismo tener la información de cuales son los parámetros de entrada y los de salida, que no tenerla...
El comentario de Marcos es muy cierto. Ayuda muchisimo para entender que es lo que hace un objeto saber como se usan los parametros que recibe.
ResponderBorrar