Comunidad de diseño web y desarrollo en internet

Strict Data Typing en ActionScript

A pesar del tiempo que tienen ya ActionScript 2 y ActionScript 3, aún existe mucha gente que desconoce el Strict Data Typing y escriben su código del mismo modo como se hace en ActionScript 1 o PHP, por lo que podemos ver cosas como ésta:

Código :

miVariable = "Hola Mundo";

Que no es muy diferente a lo que haríamos en PHP:

Código :

$miVariable = "Hola Mundo";


Como se dan cuenta, la única diferencia entre uno y otro, es el signo de dólar ($) que identifica a un variable en PHP.

Claro que en este momento puedes decir: "Sí, yo lo hago así y me parece genial porque puedo poner distintos valores, de distintos tipos, en la misma variable". E incluso puedes pensar que eso te hace c00l, que ahorras memoria porque puedes hacer varias cosas con la misma variable y que estás contribuyendo al bienestar de los niños del mundo...

Pues, mi querido(a) amigo(a), lamento tener que informarte que estás equivocado, y ahora veremos por qué:

¿Qué es el Strict Data Typing?


Bien, el Tipeo Estricto de Datos no es más que una regla que nos permite asegurarnos acerca del tipo de dato que tendrá una variable específica, evitando que, accidentalmente, introduzcamos un valor de tipo equivocado en nuestro código.

El modo como funciona el Strict Data Typing en ActionScript 2 y ActionScript 3 es el siguiente:

Código :

var nombreVariable:TipoDato


¿Por Qué Adoptar el Strict Data Typing?


La razón principal es sencilla: control sobre el código. Pocas cosas son tan frustrantes como un código que no da errores pero tampoco los resultados esperados. Además que los errores de tipos de datos son de los más difíciles de rastrear. Veamos un pequeño ejemplo:

Código :

miNumero = "10";
miOtroNumero = miNumero + 10;
trace(miOtroNumero);


En principio parece que todo estaría bien, no hay errores de compilación, pero cuando corremos el código nos aparece un hermoso NaN (Not a Number) ¿Por qué nos pasa eso si somos buena gente? Sencillo, al colocar el valor de miNumero entre comillas (""), estamos diciendo que es texto (String), no un número, por lo que la operación no puede ejecutarse.

Claro que esto es sólo un pequeño ejemplo a modo de ilustración. Ahora imagina que esto te ocurra cuando ya tienes unas cuantas líneas de código, o estás trabajando con funciones que -para ahorrar recursos- usan la misma variable con datos diferentes...

Tampoco es que necesariamente ahorres recursos, puesto que el compilador se verá en la obligación de chequear en cada momento qué tipo de variable metes allí, para convertir el tipo de datos al necesario. Esto significa también que asignará la mayor cantidad de memoria posible a la variable para evitar la pérdida de datos.

De Cómo el Strict Data Typing Salvó el Planeta


Como ves, la principal ventaja del SDT es que permitirá chequear, en tiempo de compilación si los valores que estás colocando en la variable son los que se esperan. Además, permitirá un uso más eficiente de los recursos porque le asignará a cada variable la cantidad de memoria necesaria para cada caso y no más; así que en vez de perder, ganas. Eso sin decir que hace tu código más legible porque le dice al siguiente que lo lea (que puedes ser tú mismo) qué tipo de datos debe esperar. También aumenta la performance de tu aplicación porque el compilador no tiene que estar averiguando qué tipo de datos debe esperar por cada variable. Dicho sea de paso, el Strict Data Typing es obligatorio en ActionScript 3. Así que si cambiamos el ejemplo anterior por:

Código :

var miNumero:Number = "10";
var miOtroNumero:Number = miNumero + 10;
trace(miOtroNumero);


Tendríamos un hermoso mensaje de error en tiempo de compilación que nos diría algo como se recibió String donde se esperaba Number, lo que nos permitirá diagnosticar enseguida donde se encuentra el error y corregirlo, por ejemplo con:

Código :

var miNumero:Number = 10;
var miOtroNumero:Number = miNumero + 10;
trace(miOtroNumero);


y asunto terminado.

Si el SDT es tan bueno ¿por qué puedo escribir código en ActionScript 2 sin él?


La respuesta es simple: ActionScript 2 es lo que yo llamo una versión de transición entre ActionScript 1 y ActionScript 3. Mucho más potente que la primera pero compatible con ella. Además, da las pautas para escribir código orientado a objetos, que será lo que veamos en ActionScript 3. Esta necesidad de compatibilidad con ActionScript 1 es lo que permite usar algunos comandos que ya están desfasados en ActionScript 2, como target, ifFrameLoaded, etc. con la esperanza de que la gente migrara al nuevo esquema de forma más amigable. Lamentablemente, como lo comentaba Zguillez, lo que ocurrió es que la gente seguía programando como en ActionScript 1, pensando que lo hacía en ActionScript 2. Cosas que pasan.

Así que ya lo sabes. Si quieres mantener tu integridad mental y la paz de tu alma, utiliza el Strict Data Typing y programa un poco más feliz ;)

¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.

Publica tu comentario

o puedes...

¿Estás registrado en Cristalab y quieres
publicar tu URL y avatar?

¿No estás registrado aún pero quieres hacerlo antes de publicar tu comentario?

Registrate