Adobe vient de publier un document fort intéressant intitulé « Flex SDK coding conventions and best practices ». Le titre est trompeur puisqu’il n’est point question de Flex mais bien d’AS3, ce qui est révélateur quand à l’obsession maladive d’Adobe sur Flex (au détriment de Flash en tant qu’IDE, oserais-je avancer). Plus généralement, cette louable initiative, parmi d’autres, tend à montrer à quel point la firme californienne cherche à se créer une crédibilité auprès des « vrais » développeurs.
La lecture ou au moins le survol de ce document est recommandé. C’est un condensé de bon sens qui tranche avec le grand n’importe quoi de l’AS1 et de l’AS2 (”monClip1_mc”, David T. style). Et celà peut servir d’arbitrage lors d’un désaccord entre développeurs.
Pour autant, on y relève un certain de nombres de passages un peu surprenants :
Tableaux typés
Do this:
var a:Array /* of String */ = [];
Not this:
var a:Array = [];
Étrange… Cette pratique rapelle la méthode utilisée à l’époque par le compilateur alternatif MTASC. Certes, c’est bien commode pour la complétion dans FlashDevelop par exemple, mais c’est en concurrence avec la méthode officielle Flex (lourdingue) : ArrayElementType metadata tag. La prochaine version de l’EcmaScript, et donc logiquement le futur AS4, integrera en natif les tableaux typés. En attendant, si on est courageux, on peut utiliser des classes de tableaux typés (MovieClipArray, etc) que l’on trouve dans pas mal de frameworks AS.
int plutôt que uint
Use int for integers, even if they can’t be negative. Use uint only for RGB colors, bit masks, and other non-numeric values.
Tout simplement absurde. Adobe préconise cette pratique en oubliant de préciser qu’elle découle d’un bug dans le player Flash : Types in AS3: ints not so fast, uints slow!
imports
Import specific classes, interfaces, and package-level functions rather than using the * wildcard.
Do this:
import mx.controls.Button;
import flash.utils.getTimer;
Not this:
import mx.core.*;
Mouais. Ou comment avoir 30 lignes d’imports au début de chaque classe. Je pense pas que ce soit très utiles pour les classes intrinsèques du player Flash (import flash.display.*; rules !)
À part ça, que du bon. À revisiter quand le document sera terminé.
Flex SDK coding conventions and best practices