<?xml version="1.0" encoding="utf-8"?><?xml-stylesheet title="XSL formatting" type="text/xsl" href="http://blog.lalex.com/feed/rss2/xslt" ?><rss version="2.0"
  xmlns:dc="http://purl.org/dc/elements/1.1/"
  xmlns:content="http://purl.org/rss/1.0/modules/content/"
  xmlns:atom="http://www.w3.org/2005/Atom">
<channel>
  <title>LAlex devblog v6 - Switch/case original : tester la classe d'une variable  - Commentaires</title>
  <link>http://blog.lalex.com/</link>
  <atom:link href="http://blog.lalex.com/feed/rss2/comments/302" rel="self" type="application/rss+xml"/>
  <description></description>
  <language>fr</language>
  <pubDate>Thu, 04 Sep 2008 18:23:47 +0200</pubDate>
  <copyright></copyright>
  <docs>http://blogs.law.harvard.edu/tech/rss</docs>
  <generator>Dotclear</generator>
  
    
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - caron</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2525</link>
    <guid isPermaLink="false">urn:md5:3acbc8422008d686bd6e49c76b6a8424</guid>
    <pubDate>Tue, 16 May 2006 14:50:38 +0000</pubDate>
    <dc:creator>caron</dc:creator>
    
    <description>&lt;p&gt;Cette astuce n'est pas valable en .NET, car ce qui suit le &lt;strong&gt;case&lt;/strong&gt; doit être une constante.&lt;br /&gt;Mais je retiens cette astuce pour d'autres langages.&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - Fred</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2471</link>
    <guid isPermaLink="false">urn:md5:35325c9d9567b4319d5d134a6dbe426d</guid>
    <pubDate>Wed, 22 Feb 2006 11:12:46 +0000</pubDate>
    <dc:creator>Fred</dc:creator>
    
    <description>&lt;p&gt;Il y a plusierus raisons pour lesquelles l'usage de instanceof est deconseillee et plus particulierement dans un case:&lt;br /&gt;    ta fonction getEnvironement doit connaitre de maniere exhaustive tous les types de tous les objets. Au niveau maintenance c'est pas super. Si tu rajoutes un type tu vas etre oblige de repercuter cette creation dans des fonctions qui n'ont rien a voir avec ton design. Je te raconte pas la prise de tete.&lt;br /&gt;   au niveau encapsulation c'est pas super non plus. Si durant ton developement tu veux specialiser par exemple bus et velo pour un env qui pourrait s'appeller road_plane tu dois encore modifier ta fonction, pas bien  non plus. Un objet est le seul a savoir a son etat.&lt;/p&gt;&lt;p&gt;Les seuls cas que je connais d'utilisation de instanceof sont pour tester des sur-type d'un objet qui aurait un pere abstrait (interface). Comme par exemple pour tester l'existence d'une fonction.&lt;br /&gt;if (instanceof vehicule) engine-&gt;getPetrol()&lt;br /&gt;else if (instanceof velo) engine-&gt;getShoes()&lt;br /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - LAlex</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2470</link>
    <guid isPermaLink="false">urn:md5:2ee28782b481c82fe760da3dae3240db</guid>
    <pubDate>Tue, 21 Feb 2006 15:34:49 +0000</pubDate>
    <dc:creator>LAlex</dc:creator>
    
    <description>&lt;p&gt;&lt;quote&gt;Je vais m'abstenir à l'avenir.&lt;/quote&gt;Ca, ce serait dommage.... :'(&lt;br /&gt;C'est juste que la rethorique, ca va un moment, restons dans le sujet! ^^&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - liguorien</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2469</link>
    <guid isPermaLink="false">urn:md5:d2fa6bfd40a974bf2b08e012dfbb11b0</guid>
    <pubDate>Tue, 21 Feb 2006 15:14:53 +0000</pubDate>
    <dc:creator>liguorien</dc:creator>
    
    <description>&lt;p&gt;Mon dernier message n'était qu'une réponse à la question d'eka...  Je vais m'abstenir à l'avenir.&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - LAlex</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2468</link>
    <guid isPermaLink="false">urn:md5:fdfdd8dd362374ff04c31803981bcd6c</guid>
    <pubDate>Tue, 21 Feb 2006 15:04:04 +0000</pubDate>
    <dc:creator>LAlex</dc:creator>
    
    <description>&lt;p&gt;Ehoh les copains!!! :o Ce que je démontre là, c'est juste l'utilisation d'un switch...case pour autre chose qu'une comparaison de valeurs...&lt;/p&gt;&lt;p&gt;Si on ne veut pas utiliser de instanceof, on peut aussi se la jouer sur le cast:&lt;code class=&quot;actionscript&quot;&gt;&lt;span style=&quot;color: #b1b100;&quot;&gt;switch&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;&lt;span style=&quot;color: #000000; font-weight: bold;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#123;&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;!!Boat&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;eng&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// blablabla...&lt;/span&gt;&lt;br /&gt;
&amp;nbsp; &amp;nbsp;&lt;span style=&quot;color: #b1b100;&quot;&gt;case&lt;/span&gt; &lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;!!Car&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;eng&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt; || !!Motorcycle&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#40;&lt;/span&gt;eng&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#41;&lt;/span&gt;:&lt;br /&gt;
&amp;nbsp; &amp;nbsp; &amp;nbsp; &lt;span style=&quot;color: #808080; font-style: italic;&quot;&gt;// blablabla...&lt;/span&gt;&lt;br /&gt;
&lt;span style=&quot;color: #66cc66;&quot;&gt;&amp;#125;&lt;/span&gt;&lt;/code&gt;&lt;/p&gt;&lt;p&gt;Il doit bien exister a peu prés 10.000 manière de retourner cet environnement, plus ou moins recommandables, plus ou moins &quot;clean&quot;, mais c'est une astuce que je donne, pas une leçon de POO...&lt;/p&gt;&lt;p&gt;Evidemment qu'il faut créer une méthode &lt;em&gt;getEnvironment&lt;/em&gt;... :\&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - liguorien</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2467</link>
    <guid isPermaLink="false">urn:md5:4327dd663ccc7b5d899f5f8e6d5a9e9f</guid>
    <pubDate>Tue, 21 Feb 2006 14:38:47 +0000</pubDate>
    <dc:creator>liguorien</dc:creator>
    
    <description>&lt;p&gt;Il ne fait répêter ce que tous les profs de POO disent &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;  L'utilisation du instanceof est pratique dans certain cas, mais ce n'est pas très souple et on peu très bien s'en passer avec un bon design OO.  Si un comportement change en fonction d'un type et que l'on a beaucoup de types et de comportements, il est préférable d'encapsuler le comportement dans le type.  &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;  (cf. rajouter une méthode getEnvironement() à l'interface Engine)&lt;/p&gt;&lt;p&gt;@++&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - ekameleon</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2466</link>
    <guid isPermaLink="false">urn:md5:e0655953cd5561235185ad8d335ff469</guid>
    <pubDate>Tue, 21 Feb 2006 13:46:12 +0000</pubDate>
    <dc:creator>ekameleon</dc:creator>
    
    <description>&lt;p&gt;Hello &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;Fred pourquoi tu déconseille l'utilisation de instanceof ? &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;EKA+ &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - Fred</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2465</link>
    <guid isPermaLink="false">urn:md5:8eb3e5477160e8757586941841209eb5</guid>
    <pubDate>Tue, 21 Feb 2006 11:28:03 +0000</pubDate>
    <dc:creator>Fred</dc:creator>
    
    <description>&lt;p&gt;Salut Alex,&lt;br /&gt;je suis pas super d'accord avec cette solution.&lt;br /&gt;En prog object tu n'as pas a tester le type d'object auquel tu as affaire.&lt;br /&gt;L'utilisation de instanceof est vraiment res deconseillee a part ds certains cas.&lt;br /&gt;La vraie solution elegante et orientee object est de creer pour chaque calsse d'objet : Car, Bus etc.. une methode getEnv par exmple qui est appellee sur eng.&lt;br /&gt;Ta methode getEnvironement se resume a  &lt;br /&gt;return eng-&gt;getEnv();&lt;br /&gt;a+&lt;br /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - liguorien</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2463</link>
    <guid isPermaLink="false">urn:md5:064c86ca72a8b0e9ec357da6c81dbf81</guid>
    <pubDate>Sat, 18 Feb 2006 17:58:47 +0000</pubDate>
    <dc:creator>liguorien</dc:creator>
    
    <description>&lt;p&gt;Je trouve ça un peu bizarre comme technique, mais j'avoue que ça peut-être pratique lorsque l'on travail avec une base de code qui provient de l'extérieur.  Il aurait été mieu à la base de rajouter une méthode getEnvironement() à l'interface Engine &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_wink.gif&quot; alt=&quot;;)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;À noter que cette technique ne s'applique pas aux languages qui n'acceptent que des nombres entier comme valeur dans un switch() &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - SamsamTS</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2462</link>
    <guid isPermaLink="false">urn:md5:2cc80a5eea90b8a2412a1edafb7b9365</guid>
    <pubDate>Fri, 17 Feb 2006 23:42:19 +0000</pubDate>
    <dc:creator>SamsamTS</dc:creator>
    
    <description>&lt;p&gt;Enorme ! Je ne connaissai pas merci &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - Philippe</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2461</link>
    <guid isPermaLink="false">urn:md5:0ce3cd1a15a7002bc21d4b14ac6e0192</guid>
    <pubDate>Thu, 16 Feb 2006 22:12:57 +0000</pubDate>
    <dc:creator>Philippe</dc:creator>
    
    <description>&lt;p&gt;Je trouve ça limite tordu mais magnifique &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - ekameleon</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2460</link>
    <guid isPermaLink="false">urn:md5:c982c82b79df78f4801ba7f30a00c68f</guid>
    <pubDate>Thu, 16 Feb 2006 17:09:15 +0000</pubDate>
    <dc:creator>ekameleon</dc:creator>
    
    <description>&lt;p&gt;Oui c'est clair que le principe est peu commun (je n'avais pas pensé à faire cela ;)) et pour un pattern Strategy en AS2 cela semble une bonne chose, faudrait voir ce que cela donne avec au passage une petite reflexion sur les classes directement et en testant tout simplement le namespace de la fonction constructeur de l'instance &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;EKA+ &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - LAlex</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2459</link>
    <guid isPermaLink="false">urn:md5:e5a43a24528cd70adb9b0cb1a1d2579d</guid>
    <pubDate>Thu, 16 Feb 2006 16:36:12 +0000</pubDate>
    <dc:creator>LAlex</dc:creator>
    
    <description>&lt;p&gt;@eka&gt; Si en effet, voila ce que c'est de faire un exemple trop vite fait sans le compiler... &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_redface.gif&quot; alt=&quot;:$&quot; class=&quot;smiley&quot; /&gt; En même temps, le but était surtout d'illustrer le principe...&lt;/p&gt;&lt;p&gt;Corrigé &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;&lt;p&gt;++ ^^&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - ekameleon</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2458</link>
    <guid isPermaLink="false">urn:md5:4e270a73f60823a30640f4e0304aa57a</guid>
    <pubDate>Thu, 16 Feb 2006 12:48:59 +0000</pubDate>
    <dc:creator>ekameleon</dc:creator>
    
    <description>&lt;p&gt;Hello &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;Dans ton exemple au dessus, la variable env dans le switch ne te renvois pas d'erreur à la compilation ? &lt;br /&gt;Pour ma par j'ai un joli :&lt;br /&gt;&lt;quote&gt;Les instructions précédant la première instruction 'case' d'une instruction 'switch' sont ignorées&lt;br /&gt;     var env:String = &quot;Twilight zone&quot;;&lt;/quote&gt;&lt;br /&gt;EKA+ &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_smile.gif&quot; alt=&quot;:)&quot; class=&quot;smiley&quot; /&gt;&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - Jep</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2457</link>
    <guid isPermaLink="false">urn:md5:bc3fcd8196e7217c73f2ad60e6d2e0ac</guid>
    <pubDate>Thu, 16 Feb 2006 08:55:26 +0000</pubDate>
    <dc:creator>Jep</dc:creator>
    
    <description>&lt;p&gt;Génial... je vais réexploiter ça en PHP !&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - klee</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2456</link>
    <guid isPermaLink="false">urn:md5:9f8350d3246e4d19548d1a8212b72004</guid>
    <pubDate>Wed, 15 Feb 2006 18:23:32 +0000</pubDate>
    <dc:creator>klee</dc:creator>
    
    <description>&lt;p&gt;ouais j'ai trouver cette astuce ya pas longtemps.&lt;/p&gt;&lt;p&gt;ce genre de petite astuce simplifie la vie !&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - LAlex</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2455</link>
    <guid isPermaLink="false">urn:md5:4c70597862bc74862da611a878482254</guid>
    <pubDate>Wed, 15 Feb 2006 16:15:57 +0000</pubDate>
    <dc:creator>LAlex</dc:creator>
    
    <description>&lt;p&gt;Oups! &lt;img src=&quot;http://common.lalex.com/themes/devblog/smilies/icon_redface.gif&quot; alt=&quot;:$&quot; class=&quot;smiley&quot; /&gt;&lt;br /&gt;Autant pour moi, j'avais mis au début des &lt;em&gt;return&lt;/em&gt;, et donc le &lt;em&gt;break&lt;/em&gt; était inutile... :p&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - zyegfryed</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2454</link>
    <guid isPermaLink="false">urn:md5:65ad1830d43de6915db370467a2afcd2</guid>
    <pubDate>Wed, 15 Feb 2006 15:16:19 +0000</pubDate>
    <dc:creator>zyegfryed</dc:creator>
    
    <description>&lt;p&gt;Question bête : ne vaut il pas mieux rajouter un break après l'initialisation de la variable (suite à la détection de type), ceci afin d'éviter d'éxécuter de manière séquentielle tous les tests case ? Histoire de gagner (un petit petit) en temps d'éxécution...&lt;/p&gt;</description>
  </item>
      
    
    <item>
    <title>Switch/case original : tester la classe d'une variable - Aggelos</title>
    <link>http://blog.lalex.com/post/2006/02/15/Switch/case-original-%3A-tester-la-classe-dune-variable#c2453</link>
    <guid isPermaLink="false">urn:md5:652f6e46ce4ae8eaaaf9e96d61069b3e</guid>
    <pubDate>Wed, 15 Feb 2006 14:41:06 +0000</pubDate>
    <dc:creator>Aggelos</dc:creator>
    
    <description>&lt;p&gt;Effecvivement, c'est une utilisation du switch que l'on trouve dans le moock. C'est un bon exemple d'application&lt;/p&gt;</description>
  </item>
      
</channel>
</rss>