AGK Studio 2 – «Refactorizar» el código

Published on

in

He vuelto con la siguiente entrega de las tareas previas a la generación de la nueva versión de mi juego.

Ya en el artículo anterior describí todos los aspectos que hay que cambiar antes de iniciar con la nueva versión del juego, y el primer ajuste es la refactorización del código.

¿De qué va?

Realizaré el reordenamiento, estandarización y corrección del código fuente para corregir todo lo que comenté en la publicación anterior. La prueba de fuego será validar que el juego funciona exactamente igual que antes de realizar esta tarea, y empezaremos con las variables, constantes y tipos de datos.

Declaración de constantes globales

Ya existía un archivo de nombre constants.agc que está orientado a la declaración de constantes globales. Lo que hice en esta ocasión fue recorrer todo el código buscando constantes declaradas fuera de lugar para trasladarlas al archivo fuente citado.

En el mismo proceso, aproveché para estandarizar la nomenclatura que se define como sigue:

Las constantes se declararán en letras mayúsculas, como se acostumbra en la mayoría de los lenguajes de programación que conozco (C, C++, C#, PHP, Java).

Al nombre de la constante se le antecede la letra G que indicará que es global (aquí sí vale la pena distinguir constantes globales de locales) y una letra que indica su tipo de dato:

  • I para una constante de tipo entero.
  • S para una costante cadena de texto.
  • D para una constante de tipo decimal.

De tal forma que el nombre de una constante global será:

G{I|S|D}_DESCRIPCION

Y sin más, me incliné por por usar Inglés en el código, ya que quisiera compartirlo en algún momento y este idioma le dará más alcance. Así es como se ve el código:

Declaración de variables globales

Las variables de alcance global estarán declaradas en el archivo globals.agc. Respecto de la nomenclatura, estas deberán estar escritas el letras minúsculas, iniciando con una g (que indicará que es global) y siguiendo el actual estándar, separando las partículas del nombre con guiones bajos, y terminando con el caracter $ para cadenas ó # para numéricos con decimales.

Por ejemplo:

gi_audio_on
gs_selected_language$

Para el caso de matrices, o arreglos, esto quedará indicado con una a después de la g inicial, continuando el mismo estándar:

ga_target_matrix
ga_matriz_cell_image_id

Para el caso de variables globales de tipos de datos personalizados, se usará solamente la letra g y en seguida el nombre de la variable, por ejemplo:

global g_game_config as GameConfig

El archivo de variables globales ajustado ahora luce así:

Declaración de tipos de datos personalizados

El lenguaje BASIC que da vida a AGK Studio es un lenguaje de programación de tipo procedimental, es decir, no es orientado a objetos. De tal suerte que para poder hacer unidades de información «encapsuladas» lo más que tenemos a la mano son los tipos de datos personalizados, que básicamente, si nos remontamos a C, son estructuras o registros.

La sintaxis de su declaración es como sigue:

type nombreRegistro
vampo as tipoDato,
campo as TipoDato,
...
campo as TipoDato
endtype

Como regla de nomenclatura, y para no confundir una declaración de tipo personalizado con una variable, usaré CamelCase en la definición del nombre del tipo y en los campos, el mismo estándar que para declarar variables, omitiendo el caracter final que indica el tipo de dato, ya que se declara con la cláusula as. Por ejemplo, el registro que almacena la configuración general del juego es GameConfig:

Hechos los ajustes en el reordenamiento de variables, constantes y tipos de datos, realicé los cambios en las referencias correspondientes en el programa, porque, básicamente si lo omitía, el programa no compilaba.

Resumen de las actividades

Con respecto a la depuración, ordenamiento y renombrado de constantes y variables globales, así como tipos de datos personalizados, esto fue lo que hice:

  • Recorrer cada archivo de código fuente y, en caso de encontrar variables o constantes globales, llevarlas a sus correspondientes archivos.
  • Verificar que cada variable o constante encontrada se utilizara. Aproveché para eliminar todas aquellas estaban repetidas (nombres similares, pero mismo uso) y las que solo estaban declaradas pero no usadas.
  • Las variables que correspondían a un mismo rubro las agrupé en un tipo de dato, como el de la configuración. Anteriormente eran cuatro variables globales, hoy día es una sola variable global pero de tipo GameConfig.

Habiendo hecho esos cambios, además de sustituirlos en su declaración, tuve que ir archivo por archivo para hacer las adecuaciones y referir a las variables nuevas, sustituyendo las viejas y removiendo las referencias a las que eliminé.

Y bien, eso será todo para esta etapa. Lo siguiente será ordenar los eventos del programa: dónde inicia, dónde se lee la configuración, dónde se aplica, en dónde se muestra tal o cual pantalla.

Hay mucho material y experiencias por compatir.

¡Nos leemos pronto!

Deja un comentario

Descubre más desde Crónicas de Programación

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo