Sei sulla pagina 1di 11

Simplificar cdigo en Actionscript y Javascript

Entra o Registrate
Foros

Blog

Tutoriales

Cursos

Videotutoriales

Buscar..

Comic

Qu quieres buscar?

Buscar

Buscar

Simplificar cdigo en Actionscript y Javascript


Por rabi
el 26 de Agosto de 2009

rabi.

Tecnologia y otros
Otros tutoriales por

Desde que tengo uso de razn, mi sueo dorado ha sido aparecer en la portada de Cristalab.
Para satisfacer tan caro anhelo, hoy me puse a escribir este tip, que espero que sea de utilidad
para quienes programan en ActionScript. Aunque tambin aplica para Javascript. Son trucos muy
bsicos para los expertos de la programacin, pero que pueden servir a novatos que inician.
A lo largo de ya muchos aos de programar en AS he ido adquiriendo algunas prcticas que
hacen ms compacto y legible el cdigo, facilitando as la depuracin del mismo. Aqu anoto
algunas de mis favoritas:

Incrementar o decrementar una variable numrica:

Cdigo :

i++ //en lugar de i=i+1;


i-- //en lugar de i=i-1;
i+=2 //en lugar de i=i+2;

En un condicional if, para un valor Booleano

Cdigo :

if(booleano==true){} //se puede sustituir simplemente con


if(booleano)

As mismo, si slo ponemos la variable en el argumento del if, nos detecta si esa variable tiene un
valor:
Cdigo :

if(variable) //devuelve true si tiene un valor; false si es igual a


undefined o null

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Omitir las llaves {} en sentencias cortas


Muchas veces escribimos sentencias de un solo rengln asociados a un comando if o a un loop
for. Si es el caso, podemos omitir las llaves e incluso poner todo el condicional if en un solo
rengln. Ejemplos:
Cdigo :

if(unValor>0) trace ("unValor")


else trace("nada");
for (i==0;i<10;i++) trace(i);

Asignacin de variables condicionalmente (forma corta de if)


Esta es una de mis favoritas. Va el ejemplo:
Cdigo :

//En lugar de
if (valor1==0){
valor2=1;
} else{
valor2=0;
}
//Ponemos
valor2=(valor1==9)?1:2;

Mltiples comandos en una sola lnea


Esta no es una prctica muy recomendable porque pierde legibilidad el cdigo. Sin embargo, yo
la uso mucho para poner comandos trace, de tal manera que escribo una sola lnea que despus
voy a borrar sin que me desmadre el resto del cdigo.
Hay que recordar que AS interpreta el punto y coma como fin de lnea. As, podemos poner:
Cdigo :

x=1;y=1;m=0;trace(x+" "+y+" "+m);

Uso de for...in y for each...in en lugar de loops for

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Durante muchos aos, por no investigar la forma de uso de otras opciones, utilic exclusivamente
el loop for "simple" para efectuar bucles. Las otras opciones son ms prcticas en muchos casos.
for ... in devuelve los "nombres" de los elementos en un objeto o array:
Cdigo :

var miArray=["a","b","c"];
for(var key:String in miArray)
trace("miArray[" + key + "] = " + miArray[key]) // devuelve
miArray[0] = a y as

for each ... in devuelve el objeto contenido


Cdigo :

for each (var e:* in miArray)


trace(e) //devuelve a, b, c

Uso de with
Nos evita la escritura repetitiva del nombre de un objeto. Ejemplo:
Cdigo :

var miArray:Array=new Array()


miArray['a']="Letra A";
miArray['b']="Letra B";
miArray['c']="Letra C";
//Normal
trace(miArray.a) //Letra A;
trace(miArray.b) //Letra B;
trace(miArray.c) //Letra C;
//con "with"
with (miArray){
trace(a) //Letra A;
trace(b) //Letra B;
trace(c) //Letra C;
}

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Creo que todos los tips funcionan tanto en AS2 como en AS3. Si alguien tiene otra frmula
ahorracdigo, les agradecer que las compartan.
Sabes SQL? No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y ms con el Curso
Profesional de Bases de Datos que empieza el martes, en vivo.
Envia un comentario (14)

Cmo crear una maquina de estados en Actionscript

Pathfinding en Actionscript usando Waypoints

Enviar mail HTML con Flash-PHP, buscador de dominio y plantillas

Por nestorrente el 26 de Agosto de 2009

rabi :

Asignacin de variables condicionalmente (forma corta de if)

Esta es una de mis favoritas. Va el ejemplo:


Cdigo :

//En lugar de
if (valor1==0){
valor2=1;
} else{
valor2=0;
}
//Ponemos
valor2=(valor1==9)?1:2;

Te recomiendo que pongas exactamente el mismo ejemplo, ya que los 2 cdigos que has
puesto hacen cosas "distintas", y eso al principio me despist.
No conoca esa forma de condicin, pero acabo de experimentar, y he llegado a la
conclusin de que la sintaxis es
Cdigo :

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

condicion?valor_verdadero:valor_falso

Se podra utilizar tambin para un trace, usando:


Cdigo :

var boole:Boolean = true


trace(boole?"Verdadero":"Falso") //Devuelve "Verdadero"

Que corresponde a:
Cdigo :

if(boole){
trace("Verdadero")
}else{
trace("Falso")
}

El resto est bien explicado, aunque no comparto ni lo de Omitir las llaves {} en


sentencias cortas ni lo de
Mltiples comandos en una sola lnea (que ya veo que t tampoco eres muy dado a
utilizar esto).
Por el resto bien, conoca la mayora de las cosas, pero no conoca las que he mencionado
en este post (ya he dicho que 2 no me gustan, pero est bien saber que se pueden
utilizar!)
Est bien el tip

Por rabi el 27 de Agosto de 2009

nestorrente :

Te recomiendo que pongas exactamente el mismo ejemplo, ya que los 2 cdigos que has
puesto hacen cosas "distintas", y eso al principio me despist.

Lo siento, es un error de dedo. Donde dice


Cdigo :

valor2=(valor1==9)?1:2;

debe decir
Cdigo :

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

valor2=(valor1==0)?1:2;

Efectivamente, la sintaxis es la que marcas.


Ahora bien, la duda que tengo es por qu no ests de acuerdo en omitir las llaves. Indentando
correctamente el cdigo sigue siendo bastante legible, y te ahorra mucho tiempo al teclear en los
teclados en espaol.
En cuanto a los mltiples comandos, ocasionalmente los utilizo cuando son varias asignaciones muy
cortas, como en el ejemplo que se marca. Tambin me ahorra tiempo en el scroll

Por M@U el 27 de Agosto de 2009

Un detalle.
El hecho de que agregues mltiples cosas sin ningn espacio entre ellas, y amontonarlas
en una sola linea NO significa que el cdigo se haya optimizado. Mucho menos significa
que se haya vuelto mas legible... De ah en mas parece un buen aporte.

Por isidoro el 27 de Agosto de 2009

rabi :

nestorrente :

Te recomiendo que pongas exactamente el mismo ejemplo, ya que los 2 cdigos que has
puesto hacen cosas "distintas", y eso al principio me despist.

Lo siento, es un error de dedo. Donde dice


Cdigo :

valor2=(valor1==9)?1:2;

debe decir
Cdigo :

valor2=(valor1==0)?1:2;

Efectivamente, la sintaxis es la que marcas.


Ahora bien, la duda que tengo es por qu no ests de acuerdo en omitir las llaves. Indentando
correctamente el cdigo sigue siendo bastante legible, y te ahorra mucho tiempo al teclear en
los teclados en espaol.
En cuanto a los mltiples comandos, ocasionalmente los utilizo cuando son varias asignaciones

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

muy cortas, como en el ejemplo que se marca. Tambin me ahorra tiempo en el scroll

Hola,
la correccin sigue teniendo un fallo, sera:
Cdigo :

//En lugar de
if (valor1 == 0) {
valor2 = 1;
} else {
valor2 = 0;
}
//Ponemos
valor2 = (valor1 == 0) ? 1 : 0;

Hay otra errata en esta lnea:


Cdigo :

for (i==0;i<10;i++) trace(i);


//Debera ser con un slo signo igual:
for (i=0;i<10;i++) trace(i);

En cuanto a lo de omitir las llaves, personalmente creo que slo mejora si el if o for va a quedar en
una lnea, pero no si metemos un else
Cdigo :

if (unValor > 0) trace("unValor");


for (i == 0; i < 10; i++) trace(i);

Y en cuanto a meter mltiples comandos en una lnea, creo que hay ciertos casos en los que mejora
la legibilidad, por ejemplo:
Cdigo :

x1 = 1; y1 = 0; z1 = 0;
x2 = 1; y2 = 1; z2 = 0;
x3 = 1; y3 = 0; z3 = 1;

Creo que es ms fcil reconocer as una matriz identidad 3x3 que si lo ponemos todo en una lnea.

Por nestorrente el 27 de Agosto de 2009

isidoro :

Y en cuanto a meter mltiples comandos en una lnea, creo que hay ciertos casos en
los que mejora la legibilidad, por ejemplo:

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Cdigo :

x1 = 1; y1 = 0; z1 = 0;
x2 = 1; y2 = 1; z2 = 0;
x3 = 1; y3 = 0; z3 = 1;

Creo que es ms fcil reconocer as una matriz identidad 3x3 que si lo ponemos todo
en una lnea.

Cierto, en ese caso s que me parece ms legible, no lo haba pensado.


Y lo de no utilizar llaves no lo comparto por lo mismo que han dicho por ah arriba, porque
si vas a meter un else queda un poco mal. No s, siempre he preferido poner las llaves y
las correspondientes tabulaciones. Es cuestin de costumbre, nada ms

Por isidoro el 27 de Agosto de 2009

Por cierto, he cometido una errata al poner la matriz identidad (esto del copy - paste es lo que tiene
).
Cdigo :

x1 = 1; y1 = 0; z1 = 0;
x2 = 0; y2 = 1; z2 = 0;
x3 = 0; y3 = 0; z3 = 1;

Por rabi el 27 de Agosto de 2009

Estuve revisando las recomendaciones (best practices) de este sitio y me encontr la lnea que
transcribo:
Adobe :

If the various branches of an if/else statement involve single statements, don't make them into
blocks.
Do this:
if (flag)
doThing1();
Not this:
if (flag)
{
doThing1();
}

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

And this:
if (flag)
doThing1();
else
doThing2():
Not this:
if (flag)
{
doThing1();
}
else
{
doThing2();
}
But if any branch has multiple statements, make all of them into blocks.

Por lo dems, es un documento muy interesante de leer.

Por isidoro el 28 de Agosto de 2009

Muy bueno el enlace, sobre todo me quedo con estas dos cosas:
1. La invitacin a no usar ms los sufijos del tipo "_mc" sino estandarizar el uso de notacin Camel
Case.
2. La forma de indicar un array de tipos de datos (como AS no los soporta, as por lo menos se sabe
desde un principio qu es lo que van a contener):
Cdigo :

var a:Array /* of String */ = [];

En el tema de poner o no varias sentencias en una lnea, tiene razn en que ponindolo en varias
puedes usar breakpoints en cada una de ellas.
Y en cuanto a usar o no llaves en los if, ahora que lo veo me parece mucho ms legible usando
indentacin en caso de que se omitan (aunque as los cdigos van a acabar parecindose ms a
Python que a AS3

):

Cdigo :

if (flag)
doThing1();
else
doThing2();

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Por Freddie el 30 de Agosto de 2009

Bueno, felicitaciones rabi. Tu tip est en portada.

Por loe herrera el 26 de Noviembre de 2010

buena pagina

Por sarita hernandez el 11 de Enero de 2011

muy buenos tips los de este espacio, lo k pasa es k soy nueva en flash y no c aun como declarar un
valor de tipo numerico y k no se vea de tipo texto si pueden ayudarme se los agradecere
infinitamente...

Por CLAnonimo el 17 de Enero de 2011

Felicidades muuuy til

Por Dany el 02 de Marzo de 2011

Hola. Muy bien porque te hayas querido compartir tus conocimeientos. Pero antes de postear
deberas chequear bien de no cometer erratas. Porque para los que no estamos bien familiarizados
con la sintaxis de lenguajes scripts esos tips terminar por producir efecto contrario al esperado.

Saludos

Por Dr Chos el 14 de Marzo de 2011

Hola, estoy buscando un programa para minimizar el cdigo de mis archivos Java Script. S que hay
programas que lo hacen pero no s cmo buscarlos.

A lo que me refiero con minimizar es que una vez que tienes tu cdigo de Java Script como este:

for (valor1=valor2; valor1<valor3;valor1++){

valor4="hola " + valor1;

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Simplificar cdigo en Actionscript y Javascript

Te lo simplifica de esta manera:

for(a=b;a<c;a++){d="hola "+a;}

Para que de esta manera la descarga sea mucho ms gil. Alguien sabe algo al respecto?

Publica tu comentario
Tu nombre:

Escribe tu nombre o nick


Tu comentario:

Publicar
Publicar

http://www.cristalab.com/tutoriales/simplificar-codigo-en-actionscript-y-javascript-c77942l/[23/10/2015 11:03:53 a.m.]

Potrebbero piacerti anche