Mini-AS2-coding-hysteria
Ya van una cuantas veces que tengo que escribir una guía de estilo para AS2. Dejo por aquí unos apuntes:
- No usar _root sino es absolutamente necesario*.
- No usar variables globales sino es absolutamente necesario*.
- No picar a fuego NINGUNA URL a ningún recurso. Usar un xml de configuración o FlashVars.
- Usar el prefijo “fv_” para todas las FlashVars, así se reconocen fácilmente en el código.
- No dejar traces por el código, sólo añaden ruido a la consola de log. Dejar sólo trazas de error.
- NO extender de MovieClip, utilizar composición en su lugar**.
- Declarar el tipo de TODAS las variables.
- Declarar el tipo devuelto por TODOS los métodos. Usar Void sino devuelve nada.
- Compilar con -strict en MTASC siempre que sea posible*.
- Trata de que sólo haya un return por método*.
- Intenta que todos los métodos y variables posibles sean privados. Pasar de privado a público es fácil. De público a privado se puede convertir en un infierno.
- Para ayudar a los demás a leer tú código:
- Delimita físicamente una zona de la clase como pública y otra como privada. Así es mucho más fácil ver qué métodos se pueden utilizar (API) y cuáles no.
- Utiliza la tabulación de una forma constante y coherente.
- Finaliza todas las líneas con “;”.
- Las líneas en blanco son gratis. Por favor, utilízalas.
- En el código comenta el “por qué” y no el “qué”:
- var res:Number = a + b // el resultado es a+b. MAL
- var comienzoIndice:Number = 1 // el indice empieza en uno por xxx razón. BIEN
* Hay muy pocas veces en las que sea absolutamente necesario. Repito: ¡muy pocas!
** Pronto en sus pantallas mi gran chapa sobre por qué no extender de MovieClip.
He decir que estas son mis normas actuales y que no siempre han sido las mismas. Aunque he que reconocer con el tiempo cada vez cambian menos .
Se admiten comentarios y propuestas alternativas, por supuesto.
¡Salud!
pd: si no haces las cosas como yo, te odio : )
November 21st, 2006 at 10:01 am
>>Trata de que sólo halla un return por método.
Porque? muchas veces sirve bastante para ahorrar loops superfluos y/o recursos…
November 21st, 2006 at 11:00 am
La idea es pasar de:
function wadus(val:String):Void{
var defaultReturn:String = "";
for(var x:Number=0;x<array.length;x++){
if(val == array[x]){
return val;
}
}
return defaultReturn;
}
A lo siguiente
function wadus(val:String):Void{var defaultReturn:String = "";
for(var x:Number=0;x<array.length;x++){
if(val == array[x]){
defaultReturn = val;
break;
}
}
return defaultReturn;
}
El ejemplo puede parece trivial, pero cuando hay funciones gigantes (y por desgracia las hay), es muy fácil pasar por alto en mitad del código una línea del estilo:
if(val1 == val2){ return null; }El código por debajo de esa línea no se ejecuta (si se cumple la condición, claro está), y muchas veces no es fácil de ver.
November 21st, 2006 at 11:02 am
Esta frase pasa a los anales: “Las líneas en blanco son gratis. Por favor, utilízalas.”
November 21st, 2006 at 11:31 am
A mi me gusta, Sputnik duerme un poco
November 21st, 2006 at 11:35 am
Entiendo, pero imagina este caso:
function wadus():Boolean{var defaultReturn:Boolean= false;
for(){
if(){
defaultReturn = true;
break;
}
}
if(!defaultReturn) {
for() {
if(){
defaultReturn = true;
break;
}
}
if(!defaultReturn) {
for() etc...
etc...
etc...
etc...
}
}
return defaultReturn;
}
versus
function wadus(){
for() if() return true;
for() if() return true;
for() if() return true;
return false;
}
No se si se me entiende… :P
November 21st, 2006 at 11:43 am
uy, se me olvido declarar el tipo de la 2da funcion, sorry :P
November 21st, 2006 at 1:45 pm
Veo lo que comentas, y en algunas situaciones puede hasta ayudar a la legibilidad, pero la mayoría de las veces no pasa. Por eso en las directrices pone “Trata de..” y no “Ni se te ocurra” :)
November 21st, 2006 at 5:14 pm
Ya ya… que? crees que eres el único que puede dar la chapa? xDDD
Buena lista por cierto ^^
August 13th, 2008 at 6:48 pm
De lo mejor, gracias por los apuntes muy amable por compartir tu experiencia.