martes, 3 de junio de 2025

Textos. OOo Basic

Variables vs. matrices


A fuerza de necesitar conjuntos cada vez más grandes de variables en proyectos de automatización de textos, el uso alternativo de matrices ha supuesto mejoras significativas en el manejo y en la creación del script, aunque este cambio también presenta inconvenientes. Una ventaja asociada al uso de matrices es la posibilidad de trabajar con bucles.



Primero explicaré qué supone modificar la asignación de contenido a variables vs. matrices. Para ello un ejemplo sencillo es la creación de un sistema de asignación de datos mediante InputBox() (1) cuando el número de variables es ya un tanto elevado, por ejemplo cuando alcanzamos la veintena de datos que solicitamos al usuario (2).

En realidad es indiferente que esas veinte o más variables requieran todas ellas de su correspondiente interfaz, o que parte de ellas se cumplimenten "automáticamente" mediante un procedimiento de condicionalidad referenciada (3)...

If vNombreSex = "H" Then
vTratam1 = "niño"
Else 
vTratam1 = "niña"

... el hecho es que ya la simple declaración de veinte variables supone realizar un trabajo innecesario, además de complicar el manejo de este código. Por suerte tenemos una fácil solución a mano: utilizar matrices.

El resultado es un código mucho más limpio y manejable (4), aunque debemos saber que tiene un coste: perdemos en inteligibilidad del código. Usando variables, el nombre de cada una de ellas puede ser suficientemente esclarecedor respecto al dato que contiene (5), siendo ésta una recomendación que se reitera en los manuales de programación; pero cuando usamos una matriz esa posibilidad se pierde en cierta medida. 

Entiendo que en este caso puede ser muy conveniente (6) crear una documentación anexa al script que contenga una tabla en la que se indique la relación entre cada elemento de la matriz con el contenido que referencia

NOTAS

(1) Por poner un ejemplo muy socorrido y usado por su sencillez de implementación. Es dudoso que cuando el número de variables-input a manejar sea elevado, la solución interfaz sea InputBox(). En estos casos, posiblemente lo mejor y más sencillo sea trabajar con un formulario sobre una hoja de cálculo con funciones de gestor, posiblemente una solución con categoría de [docap complejo].
(2) Esa es una cantidad relativamente moderada de variables, ya que en documentos complejos (vg. dictamen de escolarización) las variables necesarias la superan con mucho. En un [ejemplo reciente], la automatización de este documento ha supuesto trabajar con un total de 63 campos/variables, y eso que sólo se trabaja con el núcleo principal del documento y no con sus dos anexos.
(3) Este es el caso de las variables que contienen datos relativos a la expresión de la concordancia gramatical de género o número. En los ejemplos de documentos con los que trabajamos, estas variables expresan normalmente la concordancia de género y se asocian al género gramatical del sujeto, muy frecuentemente a la dicotomía alumno vs. alumna.
(4) Cierto que más cercano a infinito conforme mayor sea el número de variables. LO que debemos sopesar es si interesa trabajar con una o con varias matrices, atendiendo al tipo de datos. La solución de matriz tipo variant no es ni siempre ni necesariamente la mejor opción, aunque nos permite concentrar en una única matriz los distintos tipos de datos posibles.
(5) Al dato e incluso al tipo: es posible leer Dim txtNomAl As String como variable texto (string) que contiene el nombre del alumno.
(6) También aquí, más conveniente cuando mayor sea el tamaño de la matriz. Esta tabla permitirá a otro profesional que desee trabajar con el script una mejor comprensión de su funcionamiento, evitándole una búsqueda de referencias que a veces se vuelve muy complicada.

No hay comentarios:

Publicar un comentario

Comenta esta entrada