Javascript pour les   développeurs Java :quels sont les pièges à éviter ?       12h35 - 12h50 - La Seine B
Javascript pour les développeurs Java :    quels sont les pièges à éviter ?                  Florian Boulay          Exper...
Florian Boulay    Java depuis longtemps dans de nombreux projets dans de   grandes banques.    Aime le beau code, les bons...
Les points abordés                                New                 Portée     instanceof         wrapperModule pattern ...
Portée des variables var foo = hello;                                       Pas Jo function funct(){     if(true){        ...
Portée des variables                var foo = hello;          ien                function funct(){  Ce st b          var f...
Portée des variables function globalVar(){                                  Pas Su     bar = bye;                         ...
Portée des variables                 function globalVar(){                     var bar = bye; // ne pas oublier var       ...
Portée des variablesNe jamais oublier le mot-clé varLa portée est uniquement liée aux fonctions
Isolation du code function funct(){   var foo = hello;      Le Glob   // ...               Cest l    al }                 ...
Isolation du code : module pattern                 (function(){   isolat ion       var foo = hello;  L                  //...
Module Pattern : variante                  var module = (function () {     psulat ion     var exposedObject = {},  nca    ...
Isolation du codeIsoler du code est facile en Javascript une fois que lonconnaît mieux les fonctions.Le module pattern doi...
Objetsvar obj1 = new Object();     // objet ?obj1.funct = function(){                                          Confus  ret...
Objets                  var obj =  {         simple Reste r            prop : true,                                 funct ...
New                                                      Compovar inst1 = new ApiObject();  // on fait comme ça ?var inst2...
New            var inst = new ApiObject();   Moua is   // Règle tacite : si la fonction             commence par une majus...
Thisvar MyObject = function() {                                     Niak  this.bar = devoxx;}var oops = new MyObject();   ...
This                var MyObject = function() {         oi ?                  this.bar = devoxx; Alors qu       }         ...
ObjetsNew nest pas le passage obligé pour créer un objetUn objet est une fonction aussiThis nest pas votre ami
== == 0                 // false0 ==                    // true                                     Gneee0 == 0           ...
==     Facile              ===
instanceof vs typeofvar foo = mit mit;                                  Shepatypeof foo ;             // ?foo instanceof S...
instanceof vs typeof                   typeof 3;  // « number »       plusclair   typeof niak; // « string »C est         ...
Types wrappervar obj = new Object();var arr = new Array();                                beurkvar num = new Number(42);va...
Types wrapper            var obj = {};      upi            var arr = []   Yo       var num = 42;            var str = 42; ...
Convertir un texte en nombreparseInt(123);                   // ?parseInt(123HelloDevoxx);        // ?   Ah ouaparseInt(12...
Convertir un texte en nombre             parseInt(123);                   // 123   Hum. ..   parseInt(123HelloDevoxx);    ...
A vous désormaisJavascript contient quelques erreurs dedesign mais reste simpleJava est mainstream côté serveur, Javascrip...
Merci à tousTest disponible sur le stand  http://codinfine.com                               27 au 29 mars 2013
Prochain SlideShare
Chargement dans…5
×

Javascript pour les développeurs Java : quels sont les pièges à éviter ?

6 538 vues

Publié le

Présentation donnée lors de Devoxx France 2013 dans le cadre d'un quickie.
Détails sur le site de Devoxx France : http://www.devoxx.com/display/FR13/JavaScript+pour+les+developpeurs+Java+++quels+sont+les+pieges+a+eviter

Voici le résumé de cette session :
Javascript a été inspiré par différents langages. Java lui a donné sa syntaxe, ses objets et ses méthodes.
Les syntaxes de Javascript et Java sont très proches, les développeurs Java pensent de la même manière lorsqu'ils codent dans ces 2 langages. Cependant Javascript possèdent de nombreuses subtilités qui peuvent se transformer en bugs si elles ne sont pas connues.
A travers ce quickie, je vais lister les prinicipaux pièges dans lesquels les développeurs Java ont tendance à tomber et comment les éviter. Voici une liste non exhaustive des points qui seront abordés :

* Les différents opérateurs permettant de tester l'égalité : == et ===
* La portée des variables
* L'enfer des variables globales ou comment isoler les variables pour qu'elles ne soient pas globales
* Les conversions de chaînes de caractères en nombre
* Les objets natifs Javascript ne devant pas être utilisés comme en Java
* L'objet this et ses différentes utilisations

Et d'autres encore !

Publié dans : Technologie
0 commentaire
1 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
6 538
Sur SlideShare
0
Issues des intégrations
0
Intégrations
4 354
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
1
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

Javascript pour les développeurs Java : quels sont les pièges à éviter ?

  1. 1. Javascript pour les développeurs Java :quels sont les pièges à éviter ? 12h35 - 12h50 - La Seine B
  2. 2. Javascript pour les développeurs Java : quels sont les pièges à éviter ? Florian Boulay Expert Java chez In Fine Consulting @FlorianBoulay 27 au 29 mars 2013
  3. 3. Florian Boulay Java depuis longtemps dans de nombreux projets dans de grandes banques. Aime le beau code, les bons outils et programming, motherfucker. Actuellement : Android, Angular JS, Scala, Mongo DB, Cassandra, Performance, libgdx....
  4. 4. Les points abordés New Portée instanceof wrapperModule pattern === vs == conversion Objets this
  5. 5. Portée des variables var foo = hello; Pas Jo function funct(){     if(true){ li         var foo = bye;     }     console.log(foo);  // bye !!!!! }
  6. 6. Portée des variables var foo = hello; ien function funct(){ Ce st b     var foo = bye; // Déclaration au début     if(true){     }     console.log(foo);   }
  7. 7. Portée des variables function globalVar(){ Pas Su     bar = bye; per     console.log(bar);  // bye } console.log(bar);  // bye  !!!
  8. 8. Portée des variables function globalVar(){     var bar = bye; // ne pas oublier var Mie ux Cest     console.log(bar);   } console.log(bar); // bar is not defined
  9. 9. Portée des variablesNe jamais oublier le mot-clé varLa portée est uniquement liée aux fonctions
  10. 10. Isolation du code function funct(){   var foo = hello; Le Glob   // ... Cest l al } e ma l funct();
  11. 11. Isolation du code : module pattern (function(){ isolat ion   var foo = hello; L     // ... st bon Ce })(); // En : module pattern // Fr : fonction anonyme auto appelante
  12. 12. Module Pattern : variante var module = (function () { psulat ion var exposedObject = {}, nca privateVariable = 1; E function privateMethod() { // méthode privée } exposedObject.publicProperty = true; exposedObject.publicMethod = function () { // méthode exposée }; return exposedObject; }()); module.publicMethod();
  13. 13. Isolation du codeIsoler du code est facile en Javascript une fois que lonconnaît mieux les fonctions.Le module pattern doit être utilisé au maximum pour nepas exposer le code privéTerminé le code au niveau global
  14. 14. Objetsvar obj1 = new Object();     // objet ?obj1.funct = function(){ Confus  return me ;}var obj2 =  {                // objet ? i on funct : function() { return me;  }}var obj3 = function(arg) {   // objet ? this.funct = function() { return arg ;  }}obj1.funct();         // ?obj2.funct();         // ?obj2[funct]();      // ? var instance = new obj3(me) ;instance.funct();     // ?
  15. 15. Objets var obj =  { simple Reste r   prop : true,                funct : function() {   return me;   } }
  16. 16. New Compovar inst1 = new ApiObject();  // on fait comme ça ?var inst2 = ApiObject();      // ou comme ça ? rteme innate nt// ­­­­­­­­­­­­­­­­ // nduvar MyObject = function() {  this.bar = mux;}var oops = new MyObject();   // ??var yipp = MyObject();       // ??
  17. 17. New var inst = new ApiObject();  Moua is // Règle tacite : si la fonction  commence par une majuscule elle doit  être initialisé avec un new // lire la doc // Si utilisation de this dans une  fonction, faire un new (=  constructeur)
  18. 18. Thisvar MyObject = function() { Niak  this.bar = devoxx;}var oops = new MyObject();   // ??var yipp = MyObject();       // ??this.cheese = camembert;   // ?
  19. 19. This var MyObject = function() { oi ?   this.bar = devoxx; Alors qu } var oops = new MyObject();    console.log(oops.bar);         // devoxx var yipp = MyObject(); console.log(bar);              // devoxx // même chose quau dessus this.cheese = camembert;  // this dépend du contexte dappel
  20. 20. ObjetsNew nest pas le passage obligé pour créer un objetUn objet est une fonction aussiThis nest pas votre ami
  21. 21. == == 0                 // false0 ==                    // true Gneee0 == 0                  // true false == false          // false e ?false == 0              // truefalse == undefined        // falsefalse == null             // falsenull == undefined         // true trn  == 0           // true
  22. 22. == Facile ===
  23. 23. instanceof vs typeofvar foo = mit mit; Shepatypeof foo ;             // ?foo instanceof String;   // ?var bar = new String(vroum) ;typeof bar ;             // ?bar instanceof String;   // ?
  24. 24. instanceof vs typeof typeof 3;  // « number » plusclair typeof niak; // « string »C est 3 instanceof Number;  // false var me = new String(me); me instanceof String; // true typeof me ; // « object »
  25. 25. Types wrappervar obj = new Object();var arr = new Array(); beurkvar num = new Number(42);var str = new String(42); var bool = new Boolean(true);var regex = new RegExp(.*);
  26. 26. Types wrapper var obj = {}; upi var arr = [] Yo var num = 42; var str = 42;  var bool = true; var regex = /.*/;
  27. 27. Convertir un texte en nombreparseInt(123);                   // ?parseInt(123HelloDevoxx);        // ? Ah ouaparseInt(123);                   // ?parseInt(123HelloDevoxx, 10);    // ? is ?parseInt(0123HelloDevoxx, 8);    // ?
  28. 28. Convertir un texte en nombre parseInt(123);                   // 123 Hum. .. parseInt(123HelloDevoxx);        // 123 parseInt(123HelloDevoxx, 10);    // 123 parseInt(0123HelloDevoxx, 8);    // 83 // ­­­­­­­­­­­­­­­­­ // +123                 // 123 +123HelloDevoxx      // NaN +0123HelloDevoxx     // NaN
  29. 29. A vous désormaisJavascript contient quelques erreurs dedesign mais reste simpleJava est mainstream côté serveur, Javascript lest côté clientExcellent livre : Javascript the good parts
  30. 30. Merci à tousTest disponible sur le stand http://codinfine.com 27 au 29 mars 2013

×