Aprende a amar los Pragma en Xojo

Todo compilador que se precie de ser llamado así dispone de esta capacidad. Se trata de las directivas del compilador o, dicho de otro modo, la interacción entre nosotros —programadores— y el software encargado de compilar —convertir en código máquina o ejecutable— nuestro código fuente.

Es así, mediante la inserción de las diferentes directivas disponibles en nuestro código fuente, el modo en el que indicamos al compilador cómo deseamos que actúe en un momento determinado.

Obviamente, dichas directivas o instrucciones al compilador varían de un entorno de desarrollo a otro, de modo que lo expuesto aquí solo es aplicable en el caso de Xojo que, después de todo, es lo que nos interesa: el desarrollo fácil, potente y multiplataforma.

Aquí solo veremos las que considero más interesantes para la amplia mayoría, de entre todas las disponibles, y que puedes ver muy bien documentadas en el nuevo área de documentación de Xojo.

BackgroundTasks

Probablemente este sea uno de los que más quieras utilizar en tu día a día, dado que su uso permite que el compilador desactive la cesión de tiempo a otros hilos que se estén ejecutando al mismo tiempo que lo hace el hilo actual; donde es importante entender que el resto de los hilos se corresponden con los creados en tu aplicación, ya sean por tu código o bien como parte del propio funcionamiento derivado del framework de Xojo, como por ejemplo toda la parte encargada de que la interfaz de usuario continúe respondiendo a las interacciones del usuario.

¿Qué significa todo esto en castellano plano? Pues muy sencillo: utilizando la directiva:

#pragma BackgroundTasks false

Ganaremos algo más de velocidad en la ejecución de aquellos métodos que realicen cálculos pesados, especialmente si como parte de código de dicho método estamos utilizando algún bucle del tipo for… next

Eso sí, recuerda dejar todo en orden cuando ya no sea preciso mediante

#pragma BackgroundTasks true

Un fragmento de código tipo de ejemplo donde se podría ver aplicada dicha directiva podría ser el siguiente:

 

dim a(10000000) as color
dim b(10000000) as integer

#Pragma BackgroundTasks false
#Pragma BoundsChecking false

for n as integer = 0 to 9999999

dim c as color

c = doTheThing

a(n) = c

b(n) = n * n

next

#Pragma BackgroundTasks true
#Pragma BoundsChecking true

Ahora bien, ¡no incluyas esta directiva con el valor False en tus proyectos Web! El problema es que, de hacerlo, impedirás que se ejecuten otras sesiones hasta que vuelva a activarse la capacidad de tareas en segundo plano.

BreakOnExceptions

Este es especialmente útil cuando quieres comprobar el funcionamiento correspondiente a atrapar y tratar los errores en tu código. En concreto, se encarga de controlar la opción del menú Project > Break On Exceptions y que, por omisión, se encarga de activar y presentar el depurador (ventana de Debug del IDE de Xojo)cada vez que se produce un error en la ejecución de tu código; es decir, cuando estás ejecutando el programa en cuestión desde el propio IDE.

Ten en cuenta que mediante la inserción de la directiva:

#pragma BreakOnExceptions true

es la vía de que puedas verificar el funcionamiento de las estructuras:

Try

Catch e As tipoDeError

End Try

 

Error, un recordatorio muy útil

Puedes considerar esta directiva como un verdadero marcapáginas sobre aquél código que sabes has de revisar por un motivo u otro, ya sea por que su funcionamiento no es correcto, porque sabes que se puede optimizar o bien porque deseas verificar algún aspecto antes de compilar y desplegar definitivamente tu aplicación.

Así, cuando incluimos la directiva:

#pragma "Error Muestrame este mensaje"

En cualquier parte de nuestro código, Xojo se encargará de mostrarnos el texto “Muestrame este mensaje” cuando vayamos a compilar el programa. Eso sí, no esperes que aparezca una ventana o algo por el estilo… el mensaje de error se mostrará, junto con la propia directiva, en el propio panel de Errores correspondiente al IDE de Xojo, lo que de hecho puede resultar algo desconcertante al principio.

Deja un comentario

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