Siempre sigo las buenas prácticas para el desarrollo de aplicaciones Qlik, pero aún así había veces que veía que me faltaba algo más para añadir claridad al código, Qlik tiene un sistema de pestañas para el código para hacer separaciones lógicas (ya que internamente está todo seguido) pero no era suficiente. Sobre todo, tenía el problema durante la fase de diseño ya que cuando está todo terminado y el servidor se encarga de recargar los QVWs, como que te da igual el script.
¿Y que es compartimentar el script? Es símplemente hacer una aproximación más parecida al desarrollo de aplicaciones «normales» esto es crear funciones y procedimientos y finalmente llamarlos desde un procedimiento principal.
Sobre todo en el momento del desarrollo, va muy bien esto de compartimentar el script, ya que te facilita el poder ejecutar el script por partes. Yo antes esto lo hacía metiendo el código dentro de unos “if” inmensos, y ahora meto el código dentro de cada procedimiento.
Por ejemplo tengo varios procedimientos “estándar” que les llamo:
- Variables
- NormalizarYGuardar
- CrearCalendario
Y dependiendo la fase en la que esté tengo uno por cada extracción de fuente de datos o para crear distintas partes del modelo, etc… y finalmente se van llamando desde la última pestaña. Pudiendo crear variables para llamar a esos procedimientos o no.
Por ejemplo, esta es la fase extractora de un proyecto, y con variables controlo que fuentes de datos quiero extraer o no, dependiendo lo que esté probando en ese momento.
SUB LoadVariables
SUB NormalizeStore(_Table, _Stage, _Drop)
SUB LoadSynergist
…
CALL LoadVariables;
IF (vLoadSynergist) THEN
CALL LoadSynergist;
ENDIF
IF (vLoadMC) THEN
CALL LoadMediaCentre;
ENDIF
IF (vLoadExcel) THEN
CALL LoadExcels;
ENDIF
Y con eso se mejora un poco más la compresión del script en lugar de tener un «código spaguetti«