Una provechosa caza de bugs

A continuación encontrarás traducido al castellano el artículo escrito por Paul Lefebvre y publicado originalmente en el blog de Xojo.

Para Xojo 2022r3 el equipo ha trabajado en una amplia variedad de aspectos para el Bug Bash. Dos áreas notables en las que he trabajado fueron el Editor de Código y las actualizaciones en el área de la Ayuda de Sintaxis; así que he pensado que probablemente te interese conocer ambos un poco más en profundidad.

Editor de Código

El Editor de Código es uno de los componentes más utilizados en Xojo, de modo que siempre estamos intentando mejorarlo. Uno de los problemas reportados fue que podía llegar a utilizar bastante CPU. También había un reporte sobre el acceso a disco cuando se escribía en el Editor de Código. Tras estudiar el código determiné que el acceso a disco podría estar ocurriendo como parte de las búsquedas de los consejos que se muestran en la parte inferior (dado que se buscan sobre una base de datos SQLite) a medida que se escribe; pero dicho problema ya no se produce como parte del cambio a la nueva documentación en Xojo 2022r1, en la que se emplea una base de datos en memoria mucho más pequeña.

Sin embargo, observé que en algunas ocasiones el Editor de Código estaba haciendo una gran cantidad de trabajo. Por ejemplo, el indentado de código y el plegado de líneas de código (como en los casos de For… Next o If… Then) se actualizaba con cada pulsación de tecla.

Dado que tanto el plegado como el indentado no precisa de unas actualizaciones constantes a medida que estás tecleando, lo hemos cambiado de modo que se actualicen sólo cuando dejas de teclear, pulsas la tecla retorno o realizas alguna acción específica que implique una actualización inmediata (como por ejemplo pegar texto). La ventaja de este cambio es que se utiliza mucha menos CPU cuando se escribe en el Editor de Código y también responde más rápido de lo que puedas teclear.

También hay otras mejoras similares sobre el movimiento del ratón. Anteriormente el Área de la Ayuda de Sintaxis se actualizaba a medida que se movía el ratón en el Editor de Código. Esto distraía mucho y también consumía mucha CPU dado que debía buscar lo mostrado. Con esta release, el Área de Ayuda de Sintaxis sólo se actualiza cuando el ratón deja de moverse. Esto distrae menos y también resulta en la reducción de los picos de uso de la CPU. Una ventaja adicional de que el Editor de Código utilice menos CPU es que la batería de tu portátil debería de ofrecer ahora más autonomía mientras que estás programando con Xojo.

También relacionado con la Ayuda de Sintaxis, en algunas ocasiones esta no mostraba la ayuda basada en la posición del cursor del ratón y tenías que hacer clic para que dicha ayuda se mostrase. Se han encontrado y solucionado algunos bugs relacionados con este comportamiento, de modo que ahora deberías de obtener una información más consistente y precisa.

Otras correcciones relacionadas con el Editor de Código:

  • El cursor de texto ya no permanece visible en algunos casos cuando el Editor de Código no tiene el foco. Personalmente lo encontraba confuso cuando ocurría.
  • La ayuda de sintaxis se muestra para más palabras clave, como es el caso de los bucles y los condicionales.
  • En ciertas situaciones ya no se sitúa incorrectamente el cursor cuando se utiliza la combinación de teclas Opción-Flecha de cursor derecha.

Una solicitud pendiente desde hacía mucho era que el Área de Ayuda de Sintaxis mostraba la signatura de método para un único método, lo que no resultaba de mucha ayuda cuando se trataba de un método que disponía de varias signaturas sobrecargadas, lo que resulta bastante frecuente en la programación orientada a objetos.

Travis implementó inicialmente los cambios para permitir que el Área de Ayuda de Sintaxis mostrase los métodos sobrecargados. Te sorprendería saber la cantidad de cambios requeridos en el componente de autocompletado.

Hubo una gran cantidad de cambios, pero no fueron demasiado difíciles. La parte más compleja fue la de encontrar las diferentes permutaciones y casos especiales… que es donde entro yo.

Inicialmente teníamos el Área de Ayuda de Sintaxis expandiéndose automáticamente para mostrar todas las sobrecargas, pero durante la fase de pruebas de pre-lanzamiento advertimos que esto podía resultar en un área demasiado grande llegando a consumir prácticamente todo el espacio del Editor de Código, como por ejemplo en casos en los que existía una elevada cantidad de sobrecargas para un mismo método (como por ejemplo con los métodos Assert() de XojoUnit). Por tanto decidimos limitar el tamaño a un total de cuatro líneas y utilizar una barra de scroll en los casos en los que hubiese más.

Cuando revisaba el código advertí que el Área de Ayuda de Sintaxis debía de utilizar la misma fuente que el Editor de Código, pero debido a un bug (de 2013 o así) utilizaba sin embargo la fuente del sistema. El uso de la fuente del Editor de Código hace que resulte mucho más fácil de leer.

Mientras que en esta parte del código también mejoré las descripciones que aparecen en el Área de Ayuda de Sintaxis (tras la sintaxis de miembro) cuando están definidas en los miembros del item del proyecto (utilizando el campo Description del Inspector). Además, ahora también se muestran las descripciones del Constructor.

Gracias

Xojo existe desde hace más de 20 años y continúa siendo una herramienta productiva y útil para miles de desarrolladores creadores de apps desktop, web y mobile gracias a las continuas mejoras iterativas a lo largo de todos estos años. Me siento honrado de trabajar en ello y siempre me asombran las creaciones de nuestros usuarios; cosas que podrían no haber logrado utilizando otras herramientas más complicadas.

Quiero agradecer a todos por sus reportes de Bug Bash, y especialmente a aquellos que nos han ayudado en las pruebas durante este periodo de pre-lanzamiento de 2022r3. ¡Realmente son muy apreciados vuestros detallados informes de bugs con proyectos de ejemplo!

Tal y como se anunció el pasado mes durante la Xojo Developer Retreat, vamos a continuar con esta caza de bugs de dos semanas al inicio de cada ciclo de lanzamiento, y que comienza cuando se despliega una release como esta.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *