Il arrive à tout le monde de faire des erreurs de typo, une majuscule en trop, etc ..
C’est pourquoi, durant les phases de développement, je verifie dans mon CoreEvent, qui est la classe mere d’une bonne part de mes events, que le type d’event qui sera dispatché fait bien partie des constantes autorisées, et que d’autre part, la constante et sa variable String concordent, à l’aide de ce petit bout de code :
package org.nc.core.utils { import flash.events.Event; import flash.utils.*; public final class EventUtils { private static const maxValue : int = 97; // les majuscules public static function checkEvent (value:Event) : void { if (e != null) { var c : Class = getDefinitionByName(getQualifiedClassName(value)) as Class, eventType : String = e.type.charAt(0), i : int = 0, l : int = type.length; while(++i<l) { if (int(type.charCodeAt(i)) < maxValue) eventType+='_'; eventType+=e.type.charAt(i); } eventType = eventType.toUpperCase(); if (!(c[eventType] == e.type)) { throw new Error(getQualifiedClassName(e)+'.'+eventType+' != '+e.type+' or '+e.type+' is not in const values of '+getQualifiedClassName(e)); } } } } }
Je m’assure ainsi que un new MyEvent(MyEvent.BIDULE_CHANGED) doit être du genre ( le fonctionnement par defaut de la complétion dans l’ide Flex Builder ) :
public static const BIDULE_CHANGED : String = 'biduleChanged';
Bien sur, en production, j’enleve cette vérification du constructeur de mon event pour des questions de performance.
Discussion
yo Niko,
Content de voir ce blog revivre, je pense qu’on y trouvera quantité d’astuces précieuses ! Concernant ce post, ne pourrait-on envisager d’avoir une variable du type CompilManager.STATE, ayant pour valeur les constantes soit CompilManager.DEVELOPMENT, soit CompilManager.PRODUCTION et de switcher sur l’état afin de définir si la vérification s’effectue ou non ?
En tout cas, merci de partager ton xp avec nous ;p
En fait, je passe par ant pour la compilation, et donc certaines variables sont modifiées à la compilation, dans ce cas précis, ça pourrait etre un namespace qui change selon le type de compilation voulue, debug, test, production, selon le namespace utilisé, cela lancerait une erreur, l’enverrais dans un fichier log, ou simplement ne ferait rien.
Content de te voir par ici aussi :)
Je ne savais pas que l’on pouvait aller aussi loin dans le build avec Ant. C’est très impressionant, surtout le coup des namespaces :) Il va falloir que je m’y mette dès que possible ...
Avec Ant à priori on peut tout faire, avec un seul clic on peut faire des checkouts svn, des commits, compiler, deplacer des fichiers, lancer autant de process que nécessaire, modifier des variables, etc. C’est un gain de temps monstreux, à tout les niveaux de la chaine de build.
De plus quand on travaille sur de gros projet, compiler avec l’ide Flex Builder peut s’averer tres tres long, avec Ant, et les options qui vont bien, on gagne pas mal de temps, en recompilant par exemple uniquement les classes modifiées.