[Humeur] - Un code épuré ?!
Par Laurent Deketelaere le lundi, mai 15 2006, 13:47 - Flash plateforme - Lien permanent
Salut la compagnie,
Je me tourne vers vous car j'ai un petit souci avec moi même. Je crois que à force de vouloir coder de plus en plus proprement je deviens de moins en moins tolérant avec la manière de codé des autres.
Voici un petit échange de mail que j'ai eu avec le rédacteur d'un tutorial sur un preload en Flash dont le code m'a paru «old-school».
onClipEvent (load) { _root.stop(); this._xscale = 0; totalAcharger = _root.getBytesTotal(); } onClipEvent (enterFrame) { chargementByte = _root.getBytesLoaded(); pourcentage = int(chargementByte/totalAcharger*100); _root.txt = pourcentage+"%"; this._xscale = pourcentage; if (chargementByte == totalAcharger) { _root.gotoAndStop(2); } }
…
MAJ - Après les remarques de Foxy et réflexion, j'ai décidé de supprimer la correspondance et l'url du tutorial, car ceci n'apporte rien au sujet. Je laisse donc uniquement le code qui est au centre de la discution.
…
Alors voilà, je ne sais plus quoi penser. :/
A mes yeux il est plus difficile de passer progressivement de l'AS1 à AS2 et bientôt AS3, que de directement attaquer avec la dernière version. C'est un peu comme dire qu'il vaut mieux commencer par le manuel de Photoshop 1 avant de lire celui de la CS2, c'est plus épuré.
Je pose les questions suivante :
- Est-il de bon ton de typer les variables dans un exemple de code adressé à des débutants?
- Est-il plus compliqué à comprendre l'usage «onClipEvent (enterFrame)» plutôt que d'un «this.onEnterFrame = function(){};»?
- Pourquoi utiliser un _root alors qu'un _parent aurait suffit ?
- En quoi un Math.round() est plus compliqué qu'un int() déconseillée depuis Flash5 ?
Je suis perplexe, votre avis m'intéresse.
Commentaires
Etrange remarque de l'auteur.
-Le fait même qu'il te demande «Que voulez vous dire par " un code oldSchool ".» M'interpelle. Ce Monsieur code t il en AS2 parfois ?
oui bien sur les bonnes pratiques s'apprends des le début de l'apprentissage. Si tu commences pas a typer tes varaibles maintenant ce n'est pas apres que tu vas le faire.
Pas vraiment si tu es débutants. Tu n'as aucune base, donc tu es ouvert. A mon avis onClipEvent ou this.onEnterFrame. C'est la même chose pour toi. tu vois pas la différence puisque tu connais rien .
C'est une pratique de feignasse
même remarque en haut.
moi je sincèrement qu'on peut penser ainsi lorsqu'on code en AS1. Et le passage AS1 vers AS2 c'est pas évident. Alors ils vont de sortir que c'est plus facile pour les débutants mais en fait c'est plus facile pour eux
pour le typage, je suis d'accord avec la dame, pas besoin. J'ai appris sans et j'en ai mis ensuite.
Le plus important dans Flash, c'est le ciblage, et donc c'est pas top le _root et les événements sur l'objet.
Le int c'est nul, ca on est d'accord
Après, les commentaires sur le code :
Salut
Le code de ce tutorial n'est tout simplement pas transportable et fera l'objet de plusieurs posts sur les forums Flash Les problèmes engendrés seront en grande partie dûs à la mauvaise utilisation de _root.
Pour ma part, je crois qu'il est plus judicieux de former les gens directement sur de bonnes bases plutot que leur parler de telltarget ou de ciblage absolu.
Amicalement
JP
Je pense comme toi JP, ca ne peut que les embrouiller
Juste pour l'infos, la fonction int() a été remplacé par parseInt(expression:String , radix:Number) et non Math.round()
Salut,
je pense aussi que donner ce genre de code aux débutants est une mauvaise idée. Citation : "Je me refuse de faire des tutoriaux débutant avec la dernier version du code, pour apprendre il faut connaître les bases et parfois faire un petit retour au sources."
-> En effet, il faut commencer par les bases, mais quelles bases ?? Sûrement pas celles d'un code qui n'a plus lieu d'être depuis plusieurs versions de Flash ! Mais plutôt les bases qui correspondent aux nouvelles orientations de Flash (ciblage, typage, plus tard la POO, etc). En quoi apprendre à poser le code sur les symbôles peut-il être utile ?
Comme dit plus haut, un débutant a l'esprit frais, prêt à recevoir un enseignement sans à prioris. Si on lui inculque des méthodes de travail, çà doit être des méthodes durables. S'il doit ré-apprendre la bonne manière de coder quelques mois plus tard, c'est une perte de temps et çà ne peut que l'embrouiller.
Citation : "Les débutant demande constamment du code épuré au maximum..."
->Un débutant est-il en mesure de savoir ce qui est bon pour son apprentissage ? De plus, typer les variables donne un code plus clair, comme poser le code sur une même image et utiliser le ciblage.
Quand on apprend la guitare et qu'on a déjà commencé tout seul, le premier travail du prof est de corriger les mauvaises habitudes qu'on a prises tout seul : bien positionner la main, se tenir droit, etc... De manière à ce que ces bonnes manières deviennent au plus vite des habitudes, bases de l'apprentissage futur. Plus longtemps on reste avec nos mauvaises habitudes, et plus c'est difficile de les corriger.
Il faut donc à mon avis, dès le début, enseigner les bonnes habitudes. Un des premiers tutos que devrait suivre un débutant pourrait porter sur le ciblage, les différents types de variables, comment les utiliser, etc. Et ensuite, on peut attaquer les chargements, la création de code, etc.
++ dada
Salut la compagnie !
Je code de temps en temps de l'Actionscript pour des besoins ponctuels de mes clients (il m'est meme arrivé de faire des animations avec MTASC !). Et ce depuis plus de 5 ans. Tout ça pour dire, que je suis finalement entièrement d'accord avec toi. J'aimerais bien etre complètement débutant car faire table rase de ses mauvaises pratiques que l'on a acquis au cours des années n'est pas chose facile. Qui plus est j'ai franchement un train de retard en AS, c'est un langage qui évolue vraiment très vite. Ce genre de tutoriel induit le lecteur dans l'erreur, un débutant se devrait de démarrer avec la dernière version d'un langage directement, en l'occurence AS3 aujourd'hui. Et il en va de meme des bonnes pratiques. Que tu trouves ce genre de code dans un travail ou une ressource quelconque, passe encore. Mais là, dans un papier dont le but est d'initier les développeurs de demain, tu as raison de ne pas laisser passer ça.
Moi j'ai répété ce qui était dit dans la doc. Après si MM dit des conneries. ^^
JP ça me fait plaisir de voir que tu penses comme moi, surtout venant de la part d'un graphiste et pas d'un acharné du codeur. :p
Ca me rassure de voir que je suis pas le seul à penser que l'usage du onClipEvent est obselète (perso je l'ai même jamais utilisé, démarré sur FlashMX ). :p
mais après, ça devient trop scolaire
à vous entendre, il faudrait même déjà raisonner en class
vous imaginez tout ce qu'il faut introduire rien que pour commencer à faire ce que vous dites ? Il y a des priorités, comme :
mais quand on parle de code, il faut bien qu'il commence par un stop() quelque part, puis il comprendra le this.stop() dans les leçons de ciblage.
C'est facile de dire plus tard que c'est mieux de typer les variables (déjà apprendre ce qu'est une variable) plutot que d'expliquer en détail le ciblage si on l'a mal appris.
Bonjour à tous...
J'ai commencé par Flash 4 il y a bien longtemps déja, et teste actuellement l'AS3 avec Flex (2.0 Beta 3).
Le moins que l'on puisse dire, c'est que beaucoup de chose ont changé en 6 ou 7 ans.
Après, pour moi, tout dépends de ce que recherche un débutant dans un tutorial.
Certains veulent juste un petit bout de code tres épuré qui fait exactement ce qu'il recherchait.
D'autres, dont je fais parti, prefere tomber sur un code "complexe", dont le but est parfois éloigné du mien, mais qui me montre un code "cohérent", qui inclut toutes les "options" du genre controle d'erreur,etc...
Pour ce qui est du typage, moi je dis que ceux qui s'en passe volontairement sont tous simplement des chanceux qui n'ont jamais rencontré de problèmes dont l'absence de typage était la cause.
En fait, quand on découvre le marteau, on voit des clous partout. Mais on ne peut pas blamer ceux qui ne connaissent pas le marteau.
Je suis tout a fait d'accord avec les remarques que tu fais (notament le typage et le _root) et je pense que la réponse de l'autre gars traduit d'un coté son incompréhension de certains concepts et surtout sa "paresse", car en effet, il doit réécrire son code.
J'ai moi meme passé un temps fou à recoder des app proprement, c'est sur c'est du boulot, mais le résultat en vaut vraiment la peine. Rouvrir une app 6 mois plus tard et tout comprendre d'un coup car le code est propre et cohérent, c'est un vrai bonheur.
Neo, c'est pour ça que je pose ces questions, alors ok le typage et le ciblage c'est pas mortel, mais le onClipEvent et le int() c'est ce tirer une balle dans le pied quand on démarre.
Après chacun fait comme il le sent. :p
ali > je disais ça pour les quelques commentaires que je trouve un peu extremiste
En fait, il y a une différence entre "pas propre" et "mal fait".
On peut considérer que ne pas typer, c'est "pas propre" mais en aucun cas "mal fait"
par contre, les onClipEvent ... no comment
C'est surtout ça que j'voulais dire, un débutant n'a pas besoin d'avoir un code propre pour nous, le plus important c'est qu'il comprenne le fonctionnement, et donc ne pas "mal faire".
En fait on est tous d'accords. :p
lol ^^
Bien d'accord avec toi et Jean-Philippe, enfin... tous le monde quoi :).
Je comprends et partage ta réaction, mais l'histoire et la particularité de Flash fait qu'il y aura toujours des trains à plusieurs vitesses...
Merci de ton chaleureux accueil
Mike.
Typage fort, _root, class, delegate, AS3, remoting, RIA, asset, singleton, MVC, etc. Faut redescendre sur terre les mecs, tout ça c’est de la branlette de programmeur... Moi-même j’ai parfois du mal à saisir certains « tutoriaux » OO dédiés aux débutants.
Le tutorial parfait pour moi est celui qui vulgarise les termes employés et surtout qui les expliques.
Prenez par exemple cette phrase tirée de média-box censée introduire le débutant aux delegates. « Un événement se propage d’un objet source vers un objet écouteur en invoquant une methode sur l’écouteur, en passant l’occurrence de la sous-class d’événement qui définit le type d’événement généré ». Perso à la première lecture j’ai rien pigé. Pourtant avec un bout de code j’ai capté de quoi il s’agissait et de son utilité. Je veux bien qu’actionscript est un langage haut niveau mais ne pensez-vous pas que les explications en français devraient être plus accessible ?
Souvenez-vous des galères de vos débuts (et je ne parle pas de ceux qui ont eu la chance d’avoir une formation ou un cours). Il faut faire des erreurs pour avoir l’impression d’avancer. Alors ok, même si ce « tutorial » est naze, songez que vous ne discuter pas toujours avec quelqu’un de votre niveau.
À bon entendeur...
Hello
A mon avis cela demande jute avant tout d'expliquer simplement les choses... et c'est surement pas avec du code Flash4/5 que les choses seront plus simples à comprendre.
Si le 'débutant' est bien guidé il peut facilement comprendre les bases de la POO aprés une 10 aine d'heures de cours... Je dis pas qu'il va tout maitriser hein mais il pige ce qu'il sait déjà ... qu'il existe des objets partout autour de nous lol Pas besoin d'avoir vu Matrix à la télé ou d'avoir fait des années d'étude spécialisées pour comprendre cela
Aprés en revenant à des bases solides... c'est tellement plus simple d'avoir un code bien organisé sur un calque du scénario principal plutôt que de devoir le chercher partout les petits bout de code sur les symboles qui se trouvent dans l'animation... Faut dire que parfois il y a des gens qui adorent vivre dans le bordel. C'est à la mode il parait lol
Sinon, sans commencer tout de suite par de la POO et de l'AS2 dans tous les sens. Il y a déjà beaucoup à apprendre en banissant tout simplement le code sur les symboles ! ^_^
A noter que j'ai plus souvant vu un débutant comprendre en 5 minutes l'intérêt d'utiliser la classe mx.transitions.Tween AS2 et la facilité de l'utiliser... que de faire un preload sur un symbole de la TimeLine lol Enfin tout dépend de l'intérêt que l'on porte aux choses à mon avis
Pour en revenir au code au dessus.. Rien que pour le fait de voir encore un code de preload "super laid" sur un clip... moi je dis que celui qui fait ce tutorial ne maitrise rien du tout Ou alors il se figure qu'il maitrise et dans ce cas c'est pire encore !
A noter que le même code de base sur la scène principale en ciblant des "occurences" permet d'avoir 2 fois moins de lignes et beaucoup + de clareté
Bref... c'est une très mauvaise chose de donner le moindre crédit à ce genre de tutoriaux qui ne sont plus d'actualité depuis le FP6 Le temps passe vite.. mais franchement faut se demander ce que font certains pendant ce temps là
EKA+
En conclusion voici un tutoriel dont le code est nettement plus à mon goût, Preload sur un MovieClip.loadMovie()
Pour les mauvaise langues, il est seulement compatible FlashMX, donc utilisateurs de Flash 4 ou Flash 5 non admis. ^^
Le typage fort dans flashMX c'est pas vraiment fait pour, même si on peut compiler en FP6 dans MX2004 ^_^ Par contre pour faire un preload sur un clip pour ma part je préfère (sauf exception) utiliser la classe MovieClipLoader, c'est une classe native avec un bon système événementiel qui évite de se prendre la tête avec un setInterval ou un onEnterFrame non ?
EKA+
Je confirme ce que tu dis Eka ;), surtout il y a encore des gens qui se servent de loadMovie pour faire du préchargement... de toute manière les bonnes bases sont :
Parce que des developpeurs et des brutes qui ne connaissaient pas du tout leur framework j'en ai vu passer...
Pas mieux
Faut-il commencer par conduire une R5 avant de pouvoir conduire une BMW 6 ? je ne crois pas ( ou alors pour une question de budget ^^ ).
Comme le dit Eka l'apprentissage des bases POO n'est pas insurmontable. Je ne reviendrais pas non plus sur les points précédemment cités ( ciblage, typage ) vous connaissez certainement mon point de vue sur l'affaire.
Le plus drole dans la réponse de madame est le fait qu'elle s'autorise à penser que certaine choses seront plus ou moins digeste pour le débutant. C'est vrai qu'un "onClipEvent (enterFrame)" est beaucoup plus compliqué qu'un "this.onEnterFrame" ^^ surtout quand on ne connait pas ni l'un ni l'autre.. ^^
Sinon j'aime cette phrase : "Les débutant demande constamment du code épuré au maximum" "épuré" ça c'est sur !! de bon sens !!
Enfin, je voudrais souhaiter ton mon courage aux "débutants" qui suivront cette voie ( parce qu'à mon avis, elle va en faire d'autres de tutos ), pas facile de toujours commencer par Flash 4 quand les autres seront à Flash 12, ( ce qu'elle appelle les bases non ? ^^ )
M'enfin...c'est bien dommage..les tutos sont toujours les bienvenues pour touts les niveaux et on peut d'ailleurs la remercier pour l'effort, disons simplement que ce tuto est sorti avec quelques années de retard...
A+
Salut tout le monde,
Alors je débarque sur ce blog c'est mon premier post ici et désolé mais je ne vais pas être très positif.
Pour ce qui est du débat, je rejoint plus l'avis d'ARme que des autres. Elle a fait un tuto léger, voilà quoi. Y'a pas de quoi en faire un flan, ça aura aidé certainement quelques débutants et c'est tant mieux.
Tout le monde n'est pas ou ne veux pas être pro ou faire de l'AS toute sa vie comme vous. Après oui il y a des meilleurs tutos et alors ? Elle le fait pas payer son tuto non ?
Ali-o-kan > Pourquoi t'as écrit ce billet franchement ? Tu trouves pas ça un peu facile de venir la lyncher sur ton blog de gros développeurs ? Je veux dire c'est quoi la finalité de ta démarche au juste si ce n'est de satisfaire ton égo ?
As-tu demandé à cette personne l'autorisation de poster sur ton Blog l'intégralité de ses courriels à ce sujet (qu'elle considère peut-être comme correspondances privées !).
Bref je trouve ta démarche aussi facile qu'inutile...
Bienvenu Foxy,
Pourquoi avoir écris ce billet? Par besoin de me rassurer dans la démarche que j'ai sur les différents forums que je pratique. Passant mon temps à essayer de faire un code «propre», je n'était plus certains de l'approche d'un débutant et surtout de ses besoins et donc envie d'ouvrir un débat sur cette obsessions de pousser les débutants et graphistes à suivre cette voie.
Je cherchais à avoir l'avis d'autres personnes sur ces questions : Les question était les suivantes : {{
Les réponses que j'ai eu ont sert réconforté mes positions, mais je ne cherchais pas à réaliser un lynchage en direct, chose qui à mes yeux ne c'est pas réalisé, il y a plus de 4 personnes qui ne partage pas mon avis, ce qui est bien.
Par contre suite à ta remarque je vais retirer le nom de l'auteur du billet, j'avoue que ça c'était limite. :s Auteur à qui j'ai envoyé un mail pour lui proposer de prendre part au débat, donc si il est vraiment gêné part ma démarche il peut me contacter.
Pour conclure, si j'avais vraiment voulu créer un lynchage comme tu dis, c'est pas sur mon blog que j'aurais posté dont la visibilité est beaucoup plus faible (80-100pers/j) que la salle «vous vers nous» de certains forums.
J'espère avoir répondu à tes questions.
++
Si tu veux lancer un thread sur la pédégogie et sur le fond c'est tout à fait ton droit et c'est tant mieux à condition de respecter une certaine forme.
Tu aurais certainement pu introduire le sujet sans cibler cette personne et encore moins en livrant ses courriels (qui de plus ont servi à alimenter les arguments de certains).
Juste pour infos, les courriels sont soumis à la même legislation que les courriers papiers, et leur diffusion à un tiers sans l'accord de leur auteur est passible de 45000 euros d'amende et jusqu'à un an d'emprisonement. De plus et même si tu as prévenu la personne, une "absence de réponse" ne vaut "absoluement pas" comme un consentement ! Masquer le nom de l'auteur ne suffit pas.
Bref c'est une chance pour toi que tu ne l'es justement pas publié sur un forum et il n'y a pas de quoi s'en soulager.
Aprés d'un point de vue plus personnel, je dirai qu'au vu des fréquentations de ton blog, de ton avis sur la question et des éléments que tu nous apportes, le débat n'en était pas un et tu connaissais déjà les réponses à tes questions (même si heureusement quelques brebis galeuses viennent ternir le tableau).
Enfin, vu ton niveau et ton expérience je pense que tu as certainement des débats un peu plus interessants à proposer que de pointer du doigt des pauvres gars qui pondent des tutoriaux en mousse non ?
C'est bien de sortir ce genre de chose, mais je me pose une question, l'auteur est français, je suis belge et mon site est hébergé en Suisse, quel tribunal est compétent ? Je pars du principe que le discours que l'on tiens en privé n'est logiquement pas différents de celui que l'on tiens en public. Ensuite, cette correspondance est loin d'être un roman, elle est là pour Illustrer le sujet, ça a été une excuse pour aborder ces questions. Aujourd'hui c'est lui, mais ça aurait pu être quelqu'un d'autre.
non, pas en magasin, par contre si t'as d'autres sujets on peu en discuter samedi prochain à Paris, si t'es des notre. :p
Ca à l'air de beaucoup t'amuser mais je t'assure que ça n'a rien de drôle. Si tu te prétend fervent défenseur des codes propres, tu devrais au moins respecter les droits des internautes, ça me parait être un minimum à observer de la part d'un "professionnel" du web.
Et le principe de ton interlocuteur tu en fais quoi ? On s'en fout de ton principe à toi, il y a que tu n'as pas son autorisation et que tu n'as donc pas à diffuser ses courriels, point.
Je ne serais pas au FF cette année, mais je suis souvent sur Paris, on aura peut-être l'occasion de se rencontrer un de ces 4. En espérant effectivement qu'on parlera de choses un peu plus interessantes.
Yep,
J'ai pas mal réfléchis aujourd'hui et suis arrivé à la conclusion que cette échange de mail ainsi que le lien vers le tutos n'apportait rien.
Je les ai donc supprimé et gardé l'essentiel, çàd le code qui est proposé avec le tutorial.
++
Note que la question sur la législation internationale est intéressante ! Et je ne suis pas en mesure d’y répondre vu que j’ai toujours été une brelle en droit ^^
Et oui, que voulez-vous, nous vivons dans un monde de débat et de subversion ce qui n’est pas plus mal. Cela permet d’avoir des programmeurs nazes, des confrères doués, quelques génies ainsi que les réalisations qui vont avec Ca rajoute une certaine valeur à la diversité.
Tout cela pour dire que nous niveau tuto, on à plaisir de savoir qu’on est entre de bonnes mains
bonjour, je suis d accord avec toi, pourquoi ne pas prendre les bonnes habitudes des le debut !!! pour que cela devienne un reflexe naturel par la suite. comme dit precedemment, moi aussi j aimerais quelque part debuter pour oublier tous les vieux mauvais reflexes que flash a pu me donner sachant que j ai commencer a m interesses au develepoment par ce biais(é !! ;op) donc entre faire du flash 5 et de l as 3 il y a un monde car type le code n est pas destabilisant au contraire !
tu es dans le vrai et merci !! ;o)
salut j'ai été confronté au probleme il n'y a pas longtemps lors d'une discussion avec l'un de mes enseignants. Dans le cadre des cours nous utilisons flash , principalement dans le cadre de réalisation d'animations. Néanmoins il arrive parfois que certaines personnes aient besoin d'un morceau de code plus ou moins simple. J'ai donc été amené à proposer des morceaux de code simples commentés sommairement mais toujours les plus "propres" possibles afin qu'ils puissent être aisément réutilisés.
Le prof m'a fait remarquer qu' il valait finalement mieux que je donne du mauvais code à base de onClipEvent, qui, en cas de probleme à l'emploi pourrait etre plus facile à comprendre et à corriger par un novice avec un minimum de recherche...
Il faut en effet considérer le fait que pour beaucoup de gens l'AS n'est qu'un outil secondaire et que son apprentissage n'est pas une priorité, la priorité c'est avoir un code qui marche..c'est dommage mais c'est compréhensible ma position n'est donc plus d'imposer un code propre aux autres mais un code contenant juste ce qu'il faut, le beau code, c'est pour moi