Unofficial Content

Special Build

Los objetos hoy tienen muchas opciones relacionadas con el build. Para no sobrecargar el menu basico, seria mejor tener  una opcion  Special Build con un sub-menu  con las siguientes opciones (agrupa las opciones relacionadas con el build, no usadas muy frecuentemente) 

Rebuild

(como hoy)

Build this & Compile Mains (solo los que incluye a este objeto)

Hoy pasa muy a menundo que se hace un build with this only, y "no me compila el objeto". 
El problema es que al hacer el build de dicho objeto, se genera el archivo fuente, y luego se compila el startup object, y si no contiene al archivo no se toma en cuenta dicho objeto. 

Seria bueno tener una opcion que fuera "Regenerate this objects and Compile all main that contains this object" (tal vez es un poco largo para el menu). 

Build Object and Referenced

Hacer un build de un objeto y todos los referenciados por el (no todo el arbol, solo un nivel)

Build Object and Referred

Hacer un build de un objeto y todos aquellos que hacen referencia a este objeto. ( no todo el arbol, solo un nivel) 


//TODO: comentario

Poder poner comentarios  que empiecen con 

 //ToDo: Ajustar variables. 


Acceder rapido a la lista de objetos que tienen comentarios de ese tipo y dejarlo como lista de trabajo pendientes.  

El especificar da un warning cuando hay un objeto con un comentario //ToDo: 


Nuevos controles al especificar. 

Seria deseable que al salvar o al especificar un objetos, se hicieran controles adicionales (opcionales) para optimizar los objetos y el codigo generado. 

Variables no usadas. 

Al especificar un objeto, dar un warning si tiene variables no usadas. 

Atributos sin dominios. 

Al especificar una transaccion, dar un warning si el atributo no esta basado en un dominio. 

Variables no basada en atributo o dominio. 

Al especificar un objeto, mostrar un warning si la variable no esta basada en un atributo o un dominio. 

Objeto demasiado complejo

Permitir definir criterios de complejidad y dar warning cuando se especifica un objeto demaisado complejo (largo, ciclomatico, demasiadas reglas, etc)


Build with this only para External Objects. 

Poder tener la opcion de generar el fuente de un External Object en solitario, sin tener que especificar a los programas llamadores. 


Refactoring automático. 

En las herramientas modernas de edicion de codigo, tiene la posibilidad de realizar refactoring automatico de ciertas operaciones comunes, que hacen mas facil programar. Seria bueno que GeneXus cuente con alguna de ellas. 

Renombrar variables. 

Elegir una variable en el dialogo de variables, y poder renombrarla en todos los lugares que se utiliza, dentro del objeto (form, rules, codigo, properties, patterns, etc). 

Extraer procedure de código. 

Estando en el editor de Eventos/Procedures permitir elegir parte del codigo y generar con eso un procedure. 
Crear la regla de parm() en forma automatica, con las variables que solo estan en la parte derecha de las asignaciones o son usadas para filtrar, como parametros de entrada
Las variables que son asignadas solamente, como parametros de salida (o de entrada salida, si son usadas ademas fuera del codigo seleccionado). 

Esto ya lo hace muy bien la extension LsiExtensiones (pero seria bueno generalizarlo y ampliarlo)
 

Borrar un atributo que no esta en ninguna tabla. 

Un atributo que no esta en ninguna tabla, no deberia ser usado en ningun objeto, ni tener ninguna referencia. 
Deben cambiarse todas las referencias al mismo, cambiando el tipo de datos de los elementos de SDT, Variables, DV, por el dominio de dicho atributo (si lo tiene) o por el tipo basico del atributo si no tiene dominio. 

Esto ya lo hace a medias la extension KBDoctor (perro seria bueno generalizarlo y ampliarlo). 


Quitar un parámetro de un objeto. 

Dado un objeto que necesito sacarle un parametro, me deja elegirlo y luego recorre todos las referencias al mismo y le quita dicho parametro.

Unificar parametros en SDT

Permite seleccionar un cojunto de parametros (todos de entrada o todos de salida) y los agrupa en un SDT. 
Crea el SDT con campos con el mismo nombre que los parametros. 
Genera dos subrutinas que permiten pasar del SDT a las variables que hoy existen y otro que pasa de las variables al SDT. 
 

parm(in:&DocumentoTipo, in:&DocumentoID, out:&Habilitado)

 

&DocumentoSDT
    .DocumentoTipo
    .DocumentoID

y se cambia la regla por

parm(in:&DocumentoSDT, out:&Habilitado)

&DocumentoTipo = &DocumentoSDT.DocumentoTipo
&DocumentoID = &DocumentoSDT.DocumentoID

y todos las llamadas se cambian

de 

if DocumentoHabilitado(&Tipo,&Doc)
...
endif

por 

&DocumentoSDT.DocumentoTipo = &Tipo
&DocumentoSDT.DocumentoID = &Doc

if DocumentoHabilitado(&DocumentoSDT)
..
endif

 

Agregar un parámetro.

Permite elegir un objeto y agregarle un parametro (nombre, tipo , y si es IN OUT o INOUT .
Recorre todas las llamadas a dicho objeto, agrega una variable en la llamada con el nuevo parametro y tambien un comentario 

//TODO: Parameter XXXXX added by refactoring.

Recorrer todos los lugares en los cuales el objeto es referenciado y proponer el cambio de codigo agregando el parametro poniendo en su lugar una variable con el nombre del nuevo paramtero.


Search and Replace. 

Poder elegir un conjunto de objetos, y buscar en los objetos y replazar. Hoy el search esta basaddo en el indexado de Lucene, que por motivo de performance tenemos que deshabilitar, pues afecta muchisimo al desarrollo en KB grandes. 
Es bueno tener un buscador (que tenga opcion de buscar expresiones regulares) y que permita hacer cambios. 

Se podria pensar en bucadores especializados como por ejemplo, cambiar el tipo de datos de la variable &Moneda de Char(2) a Char(3) en todos los procedures de la KB. 

Tambien estaria bueno poder buscar por propiedades (funcionalidad que hoy existe, pero no funciona correctamente) .  Por ejemplo, Buscar todos los objetos que tengan la propiedad Encrypt Url parameters = SiteKey. 
Y luego poder hacer un build all con dichos objetos. 


Manejo de Extension, User Control y Modulos

Tener forma de diferenciar los modulos , UC y Extensiones que vienen con Genexus de los instalados por el usuario. Los primeros van a ser sobre-escrito por la proxima instalacion de GeneXus y los segundos necesitan ser mantenidos y administrados. 
Seria bueno tener una forma facil de exportar todas las extensiones, UC y modulos "de usuario" y poder instalarlo usar es export para copiarlo a otra instalacion. Esto seria bueno poder hacerlo en el GeneXus y tambien en GeneXus Server. 

Una vez que tengo una version oficial y aprobada de una instalacion GeneXus es bueno que pueda replicarse facilmente. 
Tambien estaria bueno que si tengo una version nueva de UC, Externsion, o Modulo en el server, el mismo se baje al cliente 


Opcion del menu para ir al folder de instalacion de Genexus. 

Es comun tener que ir al directorio de instalacion de Genexus, para ver determinadas cosas, como archivos de GAM, copiar extensiones, User Controls, etc. 

Cuando se tienen muchas versiones de GeneXus instaladas, pues se esta desarrollando en varios proyectos con diferentes versiones, es comun confundirse. Seria bueno tener una opcion en el menu, que permita abrir el directorio de la instalacion de Genexus. 


Opcion del menu, para hacer un GeneXus /Install

Cuando se instala una version nueva de Genexus, es comun tener que hacer una GeneXus /install. Esto es algo que no es trivial para algunos desarrolladores GeneXus y seria bueno poder hacerlo desde el menu, haciendo que GeneXus se cierre y ejecute un Genexus /install. 


Ejecutar GeneXus sin permisos de administrador. 

Seria bueno lograr que Genexus pueda ejecutar sin permisos de administrador. Simplificaria mucho el proceso de instalacion y su ejecucion. 


View Data - Prueba de Objetos GeneXus. 

Algo que facilita mucho el desarrollo, es poder probar en forma facil el funcionamiento de un objeto.
En este sentido, estaria bueno poder probar un Data Provider, por ejemplo teniendo una opcion View Data, en dicho Data Provider, que muestre como maximo 100 registros devuelto por dicho data provider. 
Si el DP tiene parametros, pide valores para dichos parametros en forma iterativa y luego muestra los datos de dicho data provider. 

Un esquema similar puede usarse para Business Component, Data Selectors, For each, etc. 
 


Mejorar la forma de almacenar referencias entre objetos en la KB.

La forma en que hoy se almacenan las referencias entre objetos, no es suficientemente detallada. Se necesita tener un tipo de referencia, y tal vez un lugar de la referencia, en donde se explicite que tipo de refrencia se tiene y en que parte del objeto se referencia.
Por ejemplo las referencias a una transaccion, hoy son similares: 

 

for each Transaction1
    msg
endfor

 

&Trasaction1.Clave=333
&Transaction1.Save()

 

&Link = Transaction.Link()

y a pesar de ser referencias a una misma transaccion, tienen todas un peso diferente en cuanto a su uso. 


Eliminar el WinForm de las transacciones

Por default, no mostrar el WinForm en transacciones y no mostrar WorkPanels. 


Trabajar con KB. 

Tener un "Reposotorio de KB" que sea un listado de todas las KB que tengo agrupadas por los criterios que me interesan. 
Poder trabajar con dichas KB, teniendo tareas como : 
* Borrar una KB (borrar la KB, la base de datos de la KB, la base de datos generada por la KB (opcional), todos los archivos de dicha KB. 
* Comprimir la KB
* Respaldar la KB
* Renombrar la KB
* Reparar la KB
* Mover la KB a otro directorio
* Abrir la KB (con la version / instalacion de GeneXus que corresponda, puede ser diferente a otras KB del repositorio)

etc.


Restablecier Ancho de columnas

En todas las grillas del IDE de Genexus que permitan cambiar el ancho de las columnas, tener una forma de restablecer el ancho original de las mismas. Hoy es muy comun que el ancho de las columnas quede mal (no se ve correctamente el contenido de las columnas) y volverlo al estado inicial es bastante dificil. 


Instalador de GeneXus / Gam Platform / GXFlow que funcione por linea de comandos. 

Para poder automatizar las instalaciones de GeneXus es indispensable que se puedan bajar nuevas versiones, ejecutar los instaladores desde linea de comandos. Hoy no funciona correctamente y no esta documentado como hacerlo, lo cual dificulta la instalacion de nuevas versiones. 

 

Last update: February 2024 | © GeneXus. All rights reserved. GeneXus Powered by Globant