<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	
	>
<channel>
	<title>Commentaires pour Today&#039;s tip</title>
	<atom:link href="https://blog.developpez.com/todaystip/comments/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/todaystip</link>
	<description></description>
	<lastBuildDate>Fri, 04 Sep 2015 20:23:02 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>Commentaires sur Quand 1+1=3, on dit merci au cache de Java par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12630/dev/java/quand-113-on-dit-merci-au-cache-de-java#comment-218</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Fri, 04 Sep 2015 20:23:02 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=548#comment-218</guid>
		<description><![CDATA[Oui je sais. C&#039;est d&#039;autant plus vicieux hein ;-) 

Imagine ces lignes de code mélangées au milieu d&#039;un gros algo : bonne chance pour comprendre ce qui se passe...]]></description>
		<content:encoded><![CDATA[<p>Oui je sais. C&rsquo;est d&rsquo;autant plus vicieux hein <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> </p>
<p>Imagine ces lignes de code mélangées au milieu d&rsquo;un gros algo : bonne chance pour comprendre ce qui se passe&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Quand 1+1=3, on dit merci au cache de Java par adiGuba</title>
		<link>https://blog.developpez.com/todaystip/p12630/dev/java/quand-113-on-dit-merci-au-cache-de-java#comment-217</link>
		<dc:creator><![CDATA[adiGuba]]></dc:creator>
		<pubDate>Thu, 03 Sep 2015 13:34:13 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=548#comment-217</guid>
		<description><![CDATA[Le plus drôle c&#039;est que System.out.println() n&#039;affiche pas la même chose :

&lt;code&gt; System.out.println(res); // affiche 2
 System.out.printf(&quot;%d&quot;, res); // affiche 3&lt;/code&gt;


a++]]></description>
		<content:encoded><![CDATA[<p>Le plus drôle c&rsquo;est que System.out.println() n&rsquo;affiche pas la même chose :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp;System.out.println(res); // affiche 2<br />
&nbsp;System.out.printf(&quot;%d&quot;, res); // affiche 3</div></td></tr></tbody></table></div>
<p>a++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Buzz : le puzzle d&#8217;entrainement du concours du meilleur dév de France 2014 par Mister Tie</title>
		<link>https://blog.developpez.com/todaystip/p12616/dev/buzz-le-puzzle-dentrainement-du-concours-du-meilleur-dev-de-france-2014#comment-216</link>
		<dc:creator><![CDATA[Mister Tie]]></dc:creator>
		<pubDate>Sat, 17 May 2014 16:40:56 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=542#comment-216</guid>
		<description><![CDATA[Je suis d&#039;accord avec Thierry sur le côté très verbeux de la solution proposée avec Java 8.
Cependant, la programmation fonctionnelle peut tout de même nous aider.
Voyez ci-après ma tentative en Scala:

&lt;code&gt;
def resolveBuzz(input: String) = {
		val buzzIndices = input.split(&quot; &quot;).zipWithIndex.filter(_._1.equals(&quot;Buzz&quot;)).map(_._2 + 1)
		(buzzIndices.head, buzzIndices.tail.find(_ % buzzIndices.head != 0).get)
	}
&lt;/code&gt;

La méthode &lt;i&gt;zipWithIndex&lt;/i&gt; permet de construire un tuple à partir de chaque élément et son index dans le tableau.
Ex: (&quot;1&quot;, 0), (&quot;Buzz&quot;, 1).

On filtre ensuite ces tuples pour ne garder que ceux ayant comme premier élément &quot;Buzz&quot;. Enfin, on ne conserve que les indexes de ces derniers que l&#039;on incrémente de 1.

Le premier de ces indexes est forcément n; donc la tête du tableau.
Il suffit ensuite de prendre le premier élément qui n&#039;est pas multiple du premier.]]></description>
		<content:encoded><![CDATA[<p>Je suis d&rsquo;accord avec Thierry sur le côté très verbeux de la solution proposée avec Java 8.<br />
Cependant, la programmation fonctionnelle peut tout de même nous aider.<br />
Voyez ci-après ma tentative en Scala:</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">def resolveBuzz(input: String) = {<br />
&nbsp; &nbsp; &nbsp; &nbsp; val buzzIndices = input.split(&quot; &quot;).zipWithIndex.filter(_._1.equals(&quot;Buzz&quot;)).map(_._2 + 1)<br />
&nbsp; &nbsp; &nbsp; &nbsp; (buzzIndices.head, buzzIndices.tail.find(_ % buzzIndices.head != 0).get)<br />
&nbsp; &nbsp; }</div></td></tr></tbody></table></div>
<p>La méthode <i>zipWithIndex</i> permet de construire un tuple à partir de chaque élément et son index dans le tableau.<br />
Ex: (&laquo;&nbsp;1&Prime;, 0), (&laquo;&nbsp;Buzz&nbsp;&raquo;, 1).</p>
<p>On filtre ensuite ces tuples pour ne garder que ceux ayant comme premier élément &laquo;&nbsp;Buzz&nbsp;&raquo;. Enfin, on ne conserve que les indexes de ces derniers que l&rsquo;on incrémente de 1.</p>
<p>Le premier de ces indexes est forcément n; donc la tête du tableau.<br />
Il suffit ensuite de prendre le premier élément qui n&rsquo;est pas multiple du premier.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Buzz : le puzzle d&#8217;entrainement du concours du meilleur dév de France 2014 par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12616/dev/buzz-le-puzzle-dentrainement-du-concours-du-meilleur-dev-de-france-2014#comment-215</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Fri, 16 May 2014 12:49:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=542#comment-215</guid>
		<description><![CDATA[Je ne suis pas encore passé à Java 8 donc je ne peux pas vérifier si ça fonctionne. En tous cas, ça a l&#039;air vachement plus complexe (et tordu aussi) que ma version... Comme quoi, la programmation fonctionnelle n&#039;est pas forcément gage de lisibilité.]]></description>
		<content:encoded><![CDATA[<p>Je ne suis pas encore passé à Java 8 donc je ne peux pas vérifier si ça fonctionne. En tous cas, ça a l&rsquo;air vachement plus complexe (et tordu aussi) que ma version&#8230; Comme quoi, la programmation fonctionnelle n&rsquo;est pas forcément gage de lisibilité.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Buzz : le puzzle d&#8217;entrainement du concours du meilleur dév de France 2014 par ybonnel</title>
		<link>https://blog.developpez.com/todaystip/p12616/dev/buzz-le-puzzle-dentrainement-du-concours-du-meilleur-dev-de-france-2014#comment-214</link>
		<dc:creator><![CDATA[ybonnel]]></dc:creator>
		<pubDate>Fri, 16 May 2014 12:43:57 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=542#comment-214</guid>
		<description><![CDATA[Juste pour le plaisir, j&#039;ai essayé d&#039;écrire la méthode &quot;solve&quot; en utilisant les nouvelles API Java 8 :

[cce_java]
public static String solve(final String line) {
        AtomicInteger compteur = new AtomicInteger(0);
        return Arrays.stream(line.split(&quot; &quot;))
                .map(word -&gt; new Pair(compteur.incrementAndGet(), word))
                .filter(wordWithIndex -&gt; wordWithIndex.getValue().equalsIgnoreCase(&quot;buzz&quot;))
                .map(Pair::getKey)
                .collect(
                        ArrayList::new,
                        (list, index) -&gt; {
                            if (list.isEmpty()) {
                                list.add(index);
                            } else if (list.size() &lt; 2) {
                                if (index % list.get(0) != 0) {
                                    list.add(index);
                                }
                            }
                        },
                        ArrayList::addAll
                ).stream()
                .map(Object::toString).collect(
                Collectors.joining(&quot; &quot;)
        );
    }
[/cce_java]

Si quelqu&#039;un a plus simple, je suis preneur :)]]></description>
		<content:encoded><![CDATA[<p>Juste pour le plaisir, j&rsquo;ai essayé d&rsquo;écrire la méthode &laquo;&nbsp;solve&nbsp;&raquo; en utilisant les nouvelles API Java 8 :</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">static</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> solve<span style="color: #009900;">&#40;</span><span style="color: #000000; font-weight: bold;">final</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Astring+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">String</span></a> line<span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; AtomicInteger compteur <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> AtomicInteger<span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aarrays+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Arrays</span></a>.<span style="color: #006633;">stream</span><span style="color: #009900;">&#40;</span>line.<span style="color: #006633;">split</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">map</span><span style="color: #009900;">&#40;</span>word <span style="color: #339933;">-&gt;</span> <span style="color: #000000; font-weight: bold;">new</span> Pair<span style="color: #009900;">&#40;</span>compteur.<span style="color: #006633;">incrementAndGet</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>, word<span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">filter</span><span style="color: #009900;">&#40;</span>wordWithIndex <span style="color: #339933;">-&gt;</span> wordWithIndex.<span style="color: #006633;">getValue</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span>.<span style="color: #006633;">equalsIgnoreCase</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;buzz&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">map</span><span style="color: #009900;">&#40;</span>Pair<span style="color: #339933;">::</span>getKey<span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">collect</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aarraylist+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ArrayList</span></a><span style="color: #339933;">::</span><span style="color: #000000; font-weight: bold;">new</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#40;</span>list, index<span style="color: #009900;">&#41;</span> <span style="color: #339933;">-&gt;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>list.<span style="color: #006633;">isEmpty</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>index<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span> <span style="color: #000000; font-weight: bold;">else</span> <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>list.<span style="color: #006633;">size</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">2</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">if</span> <span style="color: #009900;">&#40;</span>index <span style="color: #339933;">%</span> list.<span style="color: #006633;">get</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!=</span> <span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; list.<span style="color: #006633;">add</span><span style="color: #009900;">&#40;</span>index<span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#125;</span>,<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aarraylist+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">ArrayList</span></a><span style="color: #339933;">::</span>addAll<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span>.<span style="color: #006633;">stream</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; .<span style="color: #006633;">map</span><span style="color: #009900;">&#40;</span><a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Aobject+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Object</span></a><span style="color: #339933;">::</span>toString<span style="color: #009900;">&#41;</span>.<span style="color: #006633;">collect</span><span style="color: #009900;">&#40;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Collectors.<span style="color: #006633;">joining</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot; &quot;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Si quelqu&#039;un a plus simple, je suis preneur <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Renverser une String en Java : une question d&#8217;entretien technique par icexplorer</title>
		<link>https://blog.developpez.com/todaystip/p12440/dev/java/renverser-une-string-en-java-une-question-dentretien-technique#comment-213</link>
		<dc:creator><![CDATA[icexplorer]]></dc:creator>
		<pubDate>Tue, 06 May 2014 20:45:16 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=450#comment-213</guid>
		<description><![CDATA[Sinon voici une version qui &quot;fonctionne tant bien que mal&quot; sans prise en compte des caractères spéciaux (ça peut servir au candidat fainéant :p)

&lt;code&gt; 
final String chaine = &quot;abc&quot;;
final char[] chaineArray = chaine.toCharArray();
final StringBuilder s = new StringBuilder();
for (final char c : chaineArray) {
    s.insert(0, c);
}
System.out.println(s.toString());
&lt;/code&gt;]]></description>
		<content:encoded><![CDATA[<p>Sinon voici une version qui &laquo;&nbsp;fonctionne tant bien que mal&nbsp;&raquo; sans prise en compte des caractères spéciaux (ça peut servir au candidat fainéant :p)</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">final String chaine = &quot;abc&quot;;<br />
final char[] chaineArray = chaine.toCharArray();<br />
final StringBuilder s = new StringBuilder();<br />
for (final char c : chaineArray) {<br />
&nbsp; &nbsp; s.insert(0, c);<br />
}<br />
System.out.println(s.toString());</div></td></tr></tbody></table></div>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-212</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Wed, 16 Apr 2014 19:24:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-212</guid>
		<description><![CDATA[C&#039;était pour un tri par insertion monotone mais ça marche pareil pour un tri fusion : bien vu.

Pour être franc, je n&#039;ai jamais utilisé de ma vie la méthode remove() des Iterators. Du coup je ne me suis pas encore attaqué à la question.]]></description>
		<content:encoded><![CDATA[<p>C&rsquo;était pour un tri par insertion monotone mais ça marche pareil pour un tri fusion : bien vu.</p>
<p>Pour être franc, je n&rsquo;ai jamais utilisé de ma vie la méthode remove() des Iterators. Du coup je ne me suis pas encore attaqué à la question.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-211</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Wed, 16 Apr 2014 19:16:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-211</guid>
		<description><![CDATA[C&#039;est surtout que je voudrais que ce soit dynamique et qu&#039;on puisse modifier les itérators pendant l&#039;utilisation.]]></description>
		<content:encoded><![CDATA[<p>C&rsquo;est surtout que je voudrais que ce soit dynamique et qu&rsquo;on puisse modifier les itérators pendant l&rsquo;utilisation.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par Nemek</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-210</link>
		<dc:creator><![CDATA[Nemek]]></dc:creator>
		<pubDate>Wed, 16 Apr 2014 12:06:43 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-210</guid>
		<description><![CDATA[pas mal l&#039;exercice faudrait le proposer à tes élèves ;).
Si je comprends le but est de réaliser le travail de reconstruction du merge sort ?
J&#039;aurais préféré un exercice autour de l&#039;appareillage d&#039;itérateur, une idée pour un prochain billet/exercice ?

Juste une petite remarque, la méthode remove() doit supprimer le dernier élément renvoyé par next() ! Il  suffit de conserver l&#039;itérateur qui a servi à renvoyer le dernier élément.]]></description>
		<content:encoded><![CDATA[<p>pas mal l&rsquo;exercice faudrait le proposer à tes élèves ;).<br />
Si je comprends le but est de réaliser le travail de reconstruction du merge sort ?<br />
J&rsquo;aurais préféré un exercice autour de l&rsquo;appareillage d&rsquo;itérateur, une idée pour un prochain billet/exercice ?</p>
<p>Juste une petite remarque, la méthode remove() doit supprimer le dernier élément renvoyé par next() ! Il  suffit de conserver l&rsquo;itérateur qui a servi à renvoyer le dernier élément.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-209</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Tue, 15 Apr 2014 09:06:55 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-209</guid>
		<description><![CDATA[J&#039;ai ajouté une version utilisant un PeekingIterator]]></description>
		<content:encoded><![CDATA[<p>J&rsquo;ai ajouté une version utilisant un PeekingIterator</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par issamm</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-208</link>
		<dc:creator><![CDATA[issamm]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 15:09:51 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-208</guid>
		<description><![CDATA[En utilisant des ListIterator, il ne devrait pas y avoir de ConcurrentModificationException. 
A tester :)]]></description>
		<content:encoded><![CDATA[<p>En utilisant des ListIterator, il ne devrait pas y avoir de ConcurrentModificationException.<br />
A tester <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_smile.gif" alt=":)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-207</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 14:35:03 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-207</guid>
		<description><![CDATA[Et que se passe-t-il si le contenu des iterator est changé durant l&#039;execution ?]]></description>
		<content:encoded><![CDATA[<p>Et que se passe-t-il si le contenu des iterator est changé durant l&rsquo;execution ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par issamm</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-206</link>
		<dc:creator><![CDATA[issamm]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 13:30:35 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-206</guid>
		<description><![CDATA[En gros : 
&lt;code&gt;
public class IntegerBox implements Comparable&lt;IntegerBox&gt; {

	private final Integer value;
	
	private final Iterator&lt;Integer&gt; iterator;
	
	public IntegerBox(Integer value, Iterator&lt;Integer&gt; iterator) {
		this.value = value;
		this.iterator = iterator;
	}
// Getter &amp; setter
// hashcode + equals
&lt;/code&gt;

L&#039;itérateur :
&lt;code&gt;
public class MultiIterator {

	private final TreeSet&lt;IntegerBox&gt; valuesToCompare;
	
	private final Comparator&lt;IntegerBox&gt; comparator;
	
	public MultiIterator() {
		comparator = new MyComparator();
		valuesToCompare = new TreeSet&lt;IntegerBox&gt;(comparator);
	}

	public void addList(List&lt;Integer&gt; list){
		if(list == null &#124;&#124; list.size() &lt; 1){
			return;
		}
		Iterator&lt;Integer&gt; iterator = list.iterator();
		IntegerBox integerBox = new IntegerBox(iterator.next(), iterator);
		valuesToCompare.add(integerBox);
	}
	
	public void run(){
		while(valuesToCompare.size() &gt; 0){
			IntegerBox integerBoxToDisplay = valuesToCompare.first();
			Iterator&lt;Integer&gt; iterator = integerBoxToDisplay.getIterator(); 
			
			System.out.println(integerBoxToDisplay);
			valuesToCompare.remove(integerBoxToDisplay);
			
			if(iterator.hasNext()){
				IntegerBox integerBoxToAdd = new IntegerBox(iterator.next(), iterator);
				valuesToCompare.add(integerBoxToAdd);
			}
		}
	}
	
	private class MyComparator implements Comparator&lt;IntegerBox&gt;{
		
		@Override
		public int compare(IntegerBox object1, IntegerBox object2) {
			return object1.getValue().compareTo(object2.getValue());
		}
	}
}
&lt;/code&gt;

Enfin, le main d&#039;exemple :
&lt;code&gt;
	public static void main(String[] args) {
		// Arrange
        final List&lt;Integer&gt; listA = Arrays.asList(4, 3, 1);
        final List&lt;Integer&gt; listB = Arrays.asList(5, 4, 2);
        
        MultiIterator multiIterator = new MultiIterator();
        multiIterator.addList(listA);
        multiIterator.addList(listB);
        multiIterator.run();
	}
&lt;/code&gt;]]></description>
		<content:encoded><![CDATA[<p>En gros :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class IntegerBox implements Comparable&lt;IntegerBox&gt; {<br />
<br />
&nbsp; &nbsp; private final Integer value;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; private final Iterator&lt;Integer&gt; iterator;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; public IntegerBox(Integer value, Iterator&lt;Integer&gt; iterator) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.value = value;<br />
&nbsp; &nbsp; &nbsp; &nbsp; this.iterator = iterator;<br />
&nbsp; &nbsp; }<br />
// Getter &amp; setter<br />
// hashcode + equals</div></td></tr></tbody></table></div>
<p>L&rsquo;itérateur :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br />27<br />28<br />29<br />30<br />31<br />32<br />33<br />34<br />35<br />36<br />37<br />38<br />39<br />40<br />41<br />42<br />43<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">public class MultiIterator {<br />
<br />
&nbsp; &nbsp; private final TreeSet&lt;IntegerBox&gt; valuesToCompare;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; private final Comparator&lt;IntegerBox&gt; comparator;<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; public MultiIterator() {<br />
&nbsp; &nbsp; &nbsp; &nbsp; comparator = new MyComparator();<br />
&nbsp; &nbsp; &nbsp; &nbsp; valuesToCompare = new TreeSet&lt;IntegerBox&gt;(comparator);<br />
&nbsp; &nbsp; }<br />
<br />
&nbsp; &nbsp; public void addList(List&lt;Integer&gt; list){<br />
&nbsp; &nbsp; &nbsp; &nbsp; if(list == null || list.size() &lt; 1){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return;<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; Iterator&lt;Integer&gt; iterator = list.iterator();<br />
&nbsp; &nbsp; &nbsp; &nbsp; IntegerBox integerBox = new IntegerBox(iterator.next(), iterator);<br />
&nbsp; &nbsp; &nbsp; &nbsp; valuesToCompare.add(integerBox);<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; public void run(){<br />
&nbsp; &nbsp; &nbsp; &nbsp; while(valuesToCompare.size() &gt; 0){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IntegerBox integerBoxToDisplay = valuesToCompare.first();<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; Iterator&lt;Integer&gt; iterator = integerBoxToDisplay.getIterator(); <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; System.out.println(integerBoxToDisplay);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; valuesToCompare.remove(integerBoxToDisplay);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; if(iterator.hasNext()){<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; IntegerBox integerBoxToAdd = new IntegerBox(iterator.next(), iterator);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; valuesToCompare.add(integerBoxToAdd);<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
&nbsp; &nbsp; <br />
&nbsp; &nbsp; private class MyComparator implements Comparator&lt;IntegerBox&gt;{<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; @Override<br />
&nbsp; &nbsp; &nbsp; &nbsp; public int compare(IntegerBox object1, IntegerBox object2) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return object1.getValue().compareTo(object2.getValue());<br />
&nbsp; &nbsp; &nbsp; &nbsp; }<br />
&nbsp; &nbsp; }<br />
}</div></td></tr></tbody></table></div>
<p>Enfin, le main d&rsquo;exemple :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; public static void main(String[] args) {<br />
&nbsp; &nbsp; &nbsp; &nbsp; // Arrange<br />
&nbsp; &nbsp; &nbsp; &nbsp; final List&lt;Integer&gt; listA = Arrays.asList(4, 3, 1);<br />
&nbsp; &nbsp; &nbsp; &nbsp; final List&lt;Integer&gt; listB = Arrays.asList(5, 4, 2);<br />
&nbsp; &nbsp; &nbsp; &nbsp; <br />
&nbsp; &nbsp; &nbsp; &nbsp; MultiIterator multiIterator = new MultiIterator();<br />
&nbsp; &nbsp; &nbsp; &nbsp; multiIterator.addList(listA);<br />
&nbsp; &nbsp; &nbsp; &nbsp; multiIterator.addList(listB);<br />
&nbsp; &nbsp; &nbsp; &nbsp; multiIterator.run();<br />
&nbsp; &nbsp; }</div></td></tr></tbody></table></div>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-205</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 12:38:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-205</guid>
		<description><![CDATA[Bonjour,

Merci pour cette proposition. J&#039;avoue toutefois n&#039;avoir pas très bien compris ;-) Un peu de code aiderait...

J&#039;ai aussi pensé à une version encore mieux utilisant le PeekingIterator de Guava et que je vous montrerai la semaine prochaine.]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Merci pour cette proposition. J&rsquo;avoue toutefois n&rsquo;avoir pas très bien compris <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";-)" class="wp-smiley" /> Un peu de code aiderait&#8230;</p>
<p>J&rsquo;ai aussi pensé à une version encore mieux utilisant le PeekingIterator de Guava et que je vous montrerai la semaine prochaine.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par issamm</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-204</link>
		<dc:creator><![CDATA[issamm]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 10:03:29 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-204</guid>
		<description><![CDATA[Précisions : Cela nécessite de créer un Comparator, comparant sur les champs IntegerBox.value.]]></description>
		<content:encoded><![CDATA[<p>Précisions : Cela nécessite de créer un Comparator, comparant sur les champs IntegerBox.value.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Multirator par issamm</title>
		<link>https://blog.developpez.com/todaystip/p12573/dev/le-multirator#comment-203</link>
		<dc:creator><![CDATA[issamm]]></dc:creator>
		<pubDate>Mon, 14 Apr 2014 09:58:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=477#comment-203</guid>
		<description><![CDATA[Bonjour Thierry,

J&#039;aurais certainement procéder de la sorte, avec l&#039;instanciation d&#039;un TreeSet, afin d&#039;avoir un Set trié sur les valeurs à comparer.

1 - Création d&#039;une classe encapsulant un Integer, ainsi qu&#039;une référence vers la liste d&#039;Integer d&#039;origine (vous allez comprendre pourquoi) : IntegerBox (nom choisi en moins d&#039;une seconde).
class IntegerBox { private final Integer value; private final List list; }

2 - Lors de la génération des valeurs en sortie :
a) Création des IntegerBox pour chaque valeur de chaque liste, avec initialisation de la référence sur la liste.
a) Création du TreeSet et initialisation avec les 1ères valeurs de chaque liste
b) lors du parcours, prendre la valeur la + petite du TreeSet (méthode first() ), et la retirer du TreeSet
c) placer dans le TreeSet, la valeur de next(), sur la liste contenue dans l&#039;IntegerBox.

3 - Et voilà :D

Cordialement,
Issam El Hachimi]]></description>
		<content:encoded><![CDATA[<p>Bonjour Thierry,</p>
<p>J&rsquo;aurais certainement procéder de la sorte, avec l&rsquo;instanciation d&rsquo;un TreeSet, afin d&rsquo;avoir un Set trié sur les valeurs à comparer.</p>
<p>1 &#8211; Création d&rsquo;une classe encapsulant un Integer, ainsi qu&rsquo;une référence vers la liste d&rsquo;Integer d&rsquo;origine (vous allez comprendre pourquoi) : IntegerBox (nom choisi en moins d&rsquo;une seconde).<br />
class IntegerBox { private final Integer value; private final List list; }</p>
<p>2 &#8211; Lors de la génération des valeurs en sortie :<br />
a) Création des IntegerBox pour chaque valeur de chaque liste, avec initialisation de la référence sur la liste.<br />
a) Création du TreeSet et initialisation avec les 1ères valeurs de chaque liste<br />
b) lors du parcours, prendre la valeur la + petite du TreeSet (méthode first() ), et la retirer du TreeSet<br />
c) placer dans le TreeSet, la valeur de next(), sur la liste contenue dans l&rsquo;IntegerBox.</p>
<p>3 &#8211; Et voilà <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_biggrin.gif" alt=":D" class="wp-smiley" /></p>
<p>Cordialement,<br />
Issam El Hachimi</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Puzzle sur le final++ par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12484/dev/java/puzzle-sur-le-final#comment-202</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Wed, 26 Feb 2014 10:54:30 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=458#comment-202</guid>
		<description><![CDATA[L&#039;idée n&#039;est pas de tester pour copier-coller la réponse. L&#039;idée c&#039;est de l&#039;expliquer sans le tester.]]></description>
		<content:encoded><![CDATA[<p>L&rsquo;idée n&rsquo;est pas de tester pour copier-coller la réponse. L&rsquo;idée c&rsquo;est de l&rsquo;expliquer sans le tester.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Puzzle sur le final++ par kolodz</title>
		<link>https://blog.developpez.com/todaystip/p12484/dev/java/puzzle-sur-le-final#comment-201</link>
		<dc:creator><![CDATA[kolodz]]></dc:creator>
		<pubDate>Thu, 20 Feb 2014 13:49:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=458#comment-201</guid>
		<description><![CDATA[1) Cela ne compile pas !

Exception in thread &quot;main&quot; java.lang.Error: Unresolved compilation problems: 
	The final local variable i cannot be assigned. It must be blank and not using a compound assignment]]></description>
		<content:encoded><![CDATA[<p>1) Cela ne compile pas !</p>
<p>Exception in thread &laquo;&nbsp;main&nbsp;&raquo; java.lang.Error: Unresolved compilation problems:<br />
	The final local variable i cannot be assigned. It must be blank and not using a compound assignment</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le non early return par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12284/dev/le-non-early-return#comment-200</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Sat, 02 Nov 2013 11:53:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=429#comment-200</guid>
		<description><![CDATA[Évidement que ça dégrade les performances. C&#039;est mécanique.]]></description>
		<content:encoded><![CDATA[<p>Évidement que ça dégrade les performances. C&rsquo;est mécanique.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le non early return par floppy22</title>
		<link>https://blog.developpez.com/todaystip/p12284/dev/le-non-early-return#comment-199</link>
		<dc:creator><![CDATA[floppy22]]></dc:creator>
		<pubDate>Thu, 31 Oct 2013 23:15:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=429#comment-199</guid>
		<description><![CDATA[Je m&#039;accorde à Lunatix sur la règle de l&#039;unicité du mot clef return dans toutes fonctions / méthodes mais sans condition de nombre de lignes.
Bien que développeur Java et partiellement .Net, je reste adepte du développement C/C++ dans sa rigueur.
Un unique return final ne dégrade aucunement les performances (Les tests conditionnels étant correctement réalisés en amont et n&#039;influençant pas le code assembleur sous-adjacent) mais peut au contraire les améliorer de par le traitement de toutes les opérations préalablement réalisées et la libération des ressources intermédiaires &quot;oubliées&quot; et laissées à charge du GC (Java ou .Net).
Je suis convaincu de la mauvaise habitude des développeurs quant à la déclaration des variables / variables membres / attributs (natifs, objets) au fil de l&#039;eau et des retours au gré des envies.
Je reste convaincu de la déclaration des varibales / variables membres / attributs (natifs, objets) en tête de fonction(s) / méthode(s) et de l&#039;utilisation du mot clef return toujours en fin de fonction /  méthode. 
Seule et unique réponse à la  lisibilité / maintenabilité.
L&#039;early return est maintenu même dans votre exemple ...]]></description>
		<content:encoded><![CDATA[<p>Je m&rsquo;accorde à Lunatix sur la règle de l&rsquo;unicité du mot clef return dans toutes fonctions / méthodes mais sans condition de nombre de lignes.<br />
Bien que développeur Java et partiellement .Net, je reste adepte du développement C/C++ dans sa rigueur.<br />
Un unique return final ne dégrade aucunement les performances (Les tests conditionnels étant correctement réalisés en amont et n&rsquo;influençant pas le code assembleur sous-adjacent) mais peut au contraire les améliorer de par le traitement de toutes les opérations préalablement réalisées et la libération des ressources intermédiaires &laquo;&nbsp;oubliées&nbsp;&raquo; et laissées à charge du GC (Java ou .Net).<br />
Je suis convaincu de la mauvaise habitude des développeurs quant à la déclaration des variables / variables membres / attributs (natifs, objets) au fil de l&rsquo;eau et des retours au gré des envies.<br />
Je reste convaincu de la déclaration des varibales / variables membres / attributs (natifs, objets) en tête de fonction(s) / méthode(s) et de l&rsquo;utilisation du mot clef return toujours en fin de fonction /  méthode.<br />
Seule et unique réponse à la  lisibilité / maintenabilité.<br />
L&rsquo;early return est maintenu même dans votre exemple &#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par Aldian</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-198</link>
		<dc:creator><![CDATA[Aldian]]></dc:creator>
		<pubDate>Thu, 31 Oct 2013 17:14:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-198</guid>
		<description><![CDATA[Sans davantage de précisions j&#039;avais compris que tu faisais varier le nombre d&#039;éléments dans une map, mais pas que tu exécutais le test plusieurs fois avant de mesurer le temps d&#039;exécution. Cette impression est renforcée par le fait que tu donnes très peu de chiffres significatifs dans tes mesures. A partir du moment où tu fais un nombre de boucles suffisant pour te permettre une bonne précision de mesure, je pense que tu peux te permettre de mettre au moins trois chiffres significatifs ;)]]></description>
		<content:encoded><![CDATA[<p>Sans davantage de précisions j&rsquo;avais compris que tu faisais varier le nombre d&rsquo;éléments dans une map, mais pas que tu exécutais le test plusieurs fois avant de mesurer le temps d&rsquo;exécution. Cette impression est renforcée par le fait que tu donnes très peu de chiffres significatifs dans tes mesures. A partir du moment où tu fais un nombre de boucles suffisant pour te permettre une bonne précision de mesure, je pense que tu peux te permettre de mettre au moins trois chiffres significatifs <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-197</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Mon, 28 Oct 2013 10:04:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-197</guid>
		<description><![CDATA[Sérieusement, tu te doutes bien que c&#039;est déjà ce que je fais !]]></description>
		<content:encoded><![CDATA[<p>Sérieusement, tu te doutes bien que c&rsquo;est déjà ce que je fais !</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par Aldian</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-196</link>
		<dc:creator><![CDATA[Aldian]]></dc:creator>
		<pubDate>Sun, 27 Oct 2013 10:11:34 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-196</guid>
		<description><![CDATA[&lt;blockquote cite=&quot;thierryler &quot;&gt;Pour finir, je fais varier le nombre d&#039;éléments dans les maps (...). Le résultat n&#039;est pas forcément évident mais on comprend bien le problème…&lt;/blockquote&gt;

Avec d&#039;aussi petits temps mesurés tu aurais très bien pu avoir des temps de réponse non ordonnés en cas de petit lag système. Je te suggèrerai de faire une boucle pour effectuer 10.000 fois chaque test et de comparer les temps totaux. 

C&#039;est le même principe que pour mesurer l&#039;épaisseur d&#039;une feuille de papier avec un double décimètre, ce n&#039;est pas évident, mais si par contre tu mesures un bloc de 1000 pages et que tu divises par 1000, tout de suite le résultat devient beaucoup plus significatif ;)]]></description>
		<content:encoded><![CDATA[<blockquote cite="thierryler "><p>Pour finir, je fais varier le nombre d&rsquo;éléments dans les maps (&#8230;). Le résultat n&rsquo;est pas forcément évident mais on comprend bien le problème…</p></blockquote>
<p>Avec d&rsquo;aussi petits temps mesurés tu aurais très bien pu avoir des temps de réponse non ordonnés en cas de petit lag système. Je te suggèrerai de faire une boucle pour effectuer 10.000 fois chaque test et de comparer les temps totaux. </p>
<p>C&rsquo;est le même principe que pour mesurer l&rsquo;épaisseur d&rsquo;une feuille de papier avec un double décimètre, ce n&rsquo;est pas évident, mais si par contre tu mesures un bloc de 1000 pages et que tu divises par 1000, tout de suite le résultat devient beaucoup plus significatif <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le non early return par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12284/dev/le-non-early-return#comment-194</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Mon, 21 Oct 2013 18:43:27 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=429#comment-194</guid>
		<description><![CDATA[On pourrait aussi dire que c&#039;est plus ou moins différent ?]]></description>
		<content:encoded><![CDATA[<p>On pourrait aussi dire que c&rsquo;est plus ou moins différent ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le non early return par lunatix</title>
		<link>https://blog.developpez.com/todaystip/p12284/dev/le-non-early-return#comment-193</link>
		<dc:creator><![CDATA[lunatix]]></dc:creator>
		<pubDate>Sat, 19 Oct 2013 16:46:19 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=429#comment-193</guid>
		<description><![CDATA[perso : si la methode fait plus de quelques lignes (on va dire une petite dizaine) : UN SEUL return est autorisé.

ca revient plus ou moins au meme]]></description>
		<content:encoded><![CDATA[<p>perso : si la methode fait plus de quelques lignes (on va dire une petite dizaine) : UN SEUL return est autorisé.</p>
<p>ca revient plus ou moins au meme</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-192</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Wed, 16 Oct 2013 11:21:21 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-192</guid>
		<description><![CDATA[On fait du Java 1.4 chez nous. Là on est en train de changer tous les bloc booléens :

&lt;code&gt;
boolean value = ...
Boolean result = new Boolean(value);
&lt;/code&gt;

par 
&lt;code&gt;
Boolean result = Boolean.valueOf(value);
&lt;/code&gt;

Le second bloc renvoie une valeur statique alors que le premier passe par un constructeur. C&#039;est pas bien méchant mais on en a beaucoup. Et je ne parle même pas de quand on veut directement les constantes...

Avec l&#039;autoboxing, c&#039;est masqué. Donc c&#039;est le drame... D&#039;ailleurs, il ne faut pas oublier qu&#039;un Boolean a trois états : true, false et null. Dans l&#039;autoboxing, ça joue ! J&#039;avais écris &lt;a href=&quot;http://blog.developpez.com/todaystip/p11938/dev/java/un-boolean-peut-prendre-trois-valeurs&quot; rel=&quot;nofollow&quot;&gt;un petit billet&lt;/a&gt; là-dessus.]]></description>
		<content:encoded><![CDATA[<p>On fait du Java 1.4 chez nous. Là on est en train de changer tous les bloc booléens :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">boolean value = ...<br />
Boolean result = new Boolean(value);</div></td></tr></tbody></table></div>
<p>par</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Boolean result = Boolean.valueOf(value);</div></td></tr></tbody></table></div>
<p>Le second bloc renvoie une valeur statique alors que le premier passe par un constructeur. C&rsquo;est pas bien méchant mais on en a beaucoup. Et je ne parle même pas de quand on veut directement les constantes&#8230;</p>
<p>Avec l&rsquo;autoboxing, c&rsquo;est masqué. Donc c&rsquo;est le drame&#8230; D&rsquo;ailleurs, il ne faut pas oublier qu&rsquo;un Boolean a trois états : true, false et null. Dans l&rsquo;autoboxing, ça joue ! J&rsquo;avais écris <a href="http://blog.developpez.com/todaystip/p11938/dev/java/un-boolean-peut-prendre-trois-valeurs" rel="nofollow">un petit billet</a> là-dessus.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par Nemek</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-191</link>
		<dc:creator><![CDATA[Nemek]]></dc:creator>
		<pubDate>Wed, 16 Oct 2013 10:29:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-191</guid>
		<description><![CDATA[Ca fait plaisir de lire qu&#039;on est pas seul ! T&#039;as pas le même soucis avec l&#039;auto(un)boxing à gogo ou la concaténation de chaînes ?

Je pense qu&#039;il doit y avoir un paquet d&#039;autres exemples, de prochains billets ?]]></description>
		<content:encoded><![CDATA[<p>Ca fait plaisir de lire qu&rsquo;on est pas seul ! T&rsquo;as pas le même soucis avec l&rsquo;auto(un)boxing à gogo ou la concaténation de chaînes ?</p>
<p>Je pense qu&rsquo;il doit y avoir un paquet d&rsquo;autres exemples, de prochains billets ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-190</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Thu, 03 Oct 2013 11:58:54 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-190</guid>
		<description><![CDATA[Effectivement. Je crois me souvenir que la précision de Java 1.4 est de l&#039;ordre de 10ms. Ca doit être sensiblement la même chose pour Java 7...

L&#039;idée, ici, c&#039;est surtout la &quot;propreté sémantique&quot; du code. L&#039;exemple, avec mesure des performances, est surtout un prétexte pour proposer un cas concret.]]></description>
		<content:encoded><![CDATA[<p>Effectivement. Je crois me souvenir que la précision de Java 1.4 est de l&rsquo;ordre de 10ms. Ca doit être sensiblement la même chose pour Java 7&#8230;</p>
<p>L&rsquo;idée, ici, c&rsquo;est surtout la &laquo;&nbsp;propreté sémantique&nbsp;&raquo; du code. L&rsquo;exemple, avec mesure des performances, est surtout un prétexte pour proposer un cas concret.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Utilisez map.entrySet par adiGuba</title>
		<link>https://blog.developpez.com/todaystip/p12259/dev/java/utilisez-map-entryset#comment-189</link>
		<dc:creator><![CDATA[adiGuba]]></dc:creator>
		<pubDate>Thu, 03 Oct 2013 11:53:46 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=415#comment-189</guid>
		<description><![CDATA[Salut,

Même si je suis plutôt d&#039;accord concernant le fond du billet, il faut faire attention aux tests qui ont un résultat de moins de 30ms...
En effet currentTimeMillis() n&#039;a pas forcément une bonne précision et peut amener des erreurs...



Sinon vivement &lt;b&gt;Java 8&lt;/b&gt; qu&#039;on puisse utiliser la méthode forEach() :
        Map map = ...
        
        map.forEach((key,value) -&gt; {
            // Traitement key-value
            System.out.println(&quot;key: &quot; + key + &quot; value: &quot; + value);     
        });]]></description>
		<content:encoded><![CDATA[<p>Salut,</p>
<p>Même si je suis plutôt d&rsquo;accord concernant le fond du billet, il faut faire attention aux tests qui ont un résultat de moins de 30ms&#8230;<br />
En effet currentTimeMillis() n&rsquo;a pas forcément une bonne précision et peut amener des erreurs&#8230;</p>
<p>Sinon vivement <b>Java 8</b> qu&rsquo;on puisse utiliser la méthode forEach() :<br />
        Map map = &#8230;</p>
<p>        map.forEach((key,value) -&gt; {<br />
            // Traitement key-value<br />
            System.out.println(&laquo;&nbsp;key: &nbsp;&raquo; + key + &nbsp;&raquo; value: &nbsp;&raquo; + value);<br />
        });</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Croissant Master Agile par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p12239/dev/le-croissant-master-agile#comment-188</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Mon, 23 Sep 2013 18:42:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=401#comment-188</guid>
		<description><![CDATA[Bonjour et merci pour ce commentaire.

Une précision s&#039;impose. Pour l&#039;instant, j&#039;ai introduit le rôle de Croissant Master avec l&#039;espoir que ça donne des résultats, mais aussi en tant qu&#039;expérience. Je suis prêt à admettre que ça ne fonctionne pas... Et je dois avouer que ça ne fonctionne pas, jusqu&#039;à présent, aussi bien que je l&#039;avais espéré. 

Autre précision, sur laquelle je n&#039;ai pas assez insisté, c&#039;est que nous ne sommes pas dans une optique agile, même si nous reprenons deux ou trois éléments classiques comme le stand-up. Pour autant, je n&#039;ai pas l&#039;impression qu&#039;il y ait du paternalisme. Cela dit, je suis actuellement Team Lead / CP et non Scrum Master donc il doit y avoir un peu de ça malgré moi... 

Du coup, ça me fait un peu peur que cela fonctionne sous serre, comme tu le disais, et que ça s’effondre dès que je ne serai plus derrière. J&#039;aimerais bien que ça fonctionne tout seul. Bon, au pire, ça me permet de passer un peu de temps avec la personne en charge du rôle de CM pour la semaine, pour lui expliquer/montrer ce dont on a besoin. C&#039;est un petit moment privilégié. Mais en disant ça, j&#039;ai l&#039;impression que je suis en train de parler de ma fille de trois ans... aie ! 

Dans tous les cas, je vais continuer encore un peu cette expérience. Je vous tiens au courant. Si vous avez des idées, elles sont les bienvenues.]]></description>
		<content:encoded><![CDATA[<p>Bonjour et merci pour ce commentaire.</p>
<p>Une précision s&rsquo;impose. Pour l&rsquo;instant, j&rsquo;ai introduit le rôle de Croissant Master avec l&rsquo;espoir que ça donne des résultats, mais aussi en tant qu&rsquo;expérience. Je suis prêt à admettre que ça ne fonctionne pas&#8230; Et je dois avouer que ça ne fonctionne pas, jusqu&rsquo;à présent, aussi bien que je l&rsquo;avais espéré. </p>
<p>Autre précision, sur laquelle je n&rsquo;ai pas assez insisté, c&rsquo;est que nous ne sommes pas dans une optique agile, même si nous reprenons deux ou trois éléments classiques comme le stand-up. Pour autant, je n&rsquo;ai pas l&rsquo;impression qu&rsquo;il y ait du paternalisme. Cela dit, je suis actuellement Team Lead / CP et non Scrum Master donc il doit y avoir un peu de ça malgré moi&#8230; </p>
<p>Du coup, ça me fait un peu peur que cela fonctionne sous serre, comme tu le disais, et que ça s’effondre dès que je ne serai plus derrière. J&rsquo;aimerais bien que ça fonctionne tout seul. Bon, au pire, ça me permet de passer un peu de temps avec la personne en charge du rôle de CM pour la semaine, pour lui expliquer/montrer ce dont on a besoin. C&rsquo;est un petit moment privilégié. Mais en disant ça, j&rsquo;ai l&rsquo;impression que je suis en train de parler de ma fille de trois ans&#8230; aie ! </p>
<p>Dans tous les cas, je vais continuer encore un peu cette expérience. Je vous tiens au courant. Si vous avez des idées, elles sont les bienvenues.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le Croissant Master Agile par Luckyluke34</title>
		<link>https://blog.developpez.com/todaystip/p12239/dev/le-croissant-master-agile#comment-187</link>
		<dc:creator><![CDATA[Luckyluke34]]></dc:creator>
		<pubDate>Mon, 23 Sep 2013 15:08:41 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=401#comment-187</guid>
		<description><![CDATA[Est-ce une blague ? Le concept de &quot;Croissant Master&quot; me semble assez parodique... mais bon pourquoi pas ;)

Je ne sais pas si l&#039;agilité est en point de mire (référence au Scrum Master) - sur le fond, je trouve l&#039;idée d&#039;aider l&#039;équipe à adopter une approche un peu plus auto-organisée intéressante. Là où je suis plus sceptique, c&#039;est quand cette auto-organisation est amenée de manière assez scolaire voire un peu paternaliste : &quot;je viens d’introduire dans mon équipe&quot;, &quot;sur la base du volontariat&quot;, &quot;ainsi désigné&quot;, &quot;une punition de son choix&quot;... en tout cas c&#039;est la vision qu&#039;on pourrait en avoir de l&#039;extérieur.

Si la sauce prend, que l&#039;équipe se pique au jeu et prend en main sa propre autonomie grâce à ça, tant mieux et c&#039;est tout le mal que je souhaite, mais une approche trop &quot;top-down&quot; et directive fait aussi courir le risque que ça devienne de l&#039;auto-organisation/agilité &quot;sous serre&quot; et que la dynamique ne soit qu&#039;artificielle, sans réelle adhésion des individus et sans sentiment d&#039;accomplissement.

L&#039;idéal selon moi est une équipe dont les membres sont à la base assez enthousiastes, autonomes et impliqués pour éviter les problèmes d&#039;animation, de convivialité, de retards que tu évoques. Je sais, c&#039;est un peu le serpent qui se mord la queue, mais jusqu&#039;ici je n&#039;ai jamais rencontré de team &quot;lambda&quot; qu&#039;on a *rendue* agile/auto-animée, seulement des groupes agiles dont la plupart des individus étaient déjà sensibles à ces thématiques et ces approches à la base et éventuellement spécialement recrutés pour ça. 

En tout cas s&#039;il y a une solution, je pense qu&#039;elle passe plutôt par le questionnement, le coaching, l&#039;éclairement que par l&#039;obligation et la hiérarchie.]]></description>
		<content:encoded><![CDATA[<p>Est-ce une blague ? Le concept de &laquo;&nbsp;Croissant Master&nbsp;&raquo; me semble assez parodique&#8230; mais bon pourquoi pas <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
<p>Je ne sais pas si l&rsquo;agilité est en point de mire (référence au Scrum Master) &#8211; sur le fond, je trouve l&rsquo;idée d&rsquo;aider l&rsquo;équipe à adopter une approche un peu plus auto-organisée intéressante. Là où je suis plus sceptique, c&rsquo;est quand cette auto-organisation est amenée de manière assez scolaire voire un peu paternaliste : &laquo;&nbsp;je viens d’introduire dans mon équipe&nbsp;&raquo;, &laquo;&nbsp;sur la base du volontariat&nbsp;&raquo;, &laquo;&nbsp;ainsi désigné&nbsp;&raquo;, &laquo;&nbsp;une punition de son choix&nbsp;&raquo;&#8230; en tout cas c&rsquo;est la vision qu&rsquo;on pourrait en avoir de l&rsquo;extérieur.</p>
<p>Si la sauce prend, que l&rsquo;équipe se pique au jeu et prend en main sa propre autonomie grâce à ça, tant mieux et c&rsquo;est tout le mal que je souhaite, mais une approche trop &laquo;&nbsp;top-down&nbsp;&raquo; et directive fait aussi courir le risque que ça devienne de l&rsquo;auto-organisation/agilité &laquo;&nbsp;sous serre&nbsp;&raquo; et que la dynamique ne soit qu&rsquo;artificielle, sans réelle adhésion des individus et sans sentiment d&rsquo;accomplissement.</p>
<p>L&rsquo;idéal selon moi est une équipe dont les membres sont à la base assez enthousiastes, autonomes et impliqués pour éviter les problèmes d&rsquo;animation, de convivialité, de retards que tu évoques. Je sais, c&rsquo;est un peu le serpent qui se mord la queue, mais jusqu&rsquo;ici je n&rsquo;ai jamais rencontré de team &laquo;&nbsp;lambda&nbsp;&raquo; qu&rsquo;on a *rendue* agile/auto-animée, seulement des groupes agiles dont la plupart des individus étaient déjà sensibles à ces thématiques et ces approches à la base et éventuellement spécialement recrutés pour ça. </p>
<p>En tout cas s&rsquo;il y a une solution, je pense qu&rsquo;elle passe plutôt par le questionnement, le coaching, l&rsquo;éclairement que par l&rsquo;obligation et la hiérarchie.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Stop aux QCM techniques en entretien par Lana.Bauer</title>
		<link>https://blog.developpez.com/todaystip/p11965/dev/stop-aux-tests-techniques-en-entretien#comment-183</link>
		<dc:creator><![CDATA[Lana.Bauer]]></dc:creator>
		<pubDate>Wed, 15 May 2013 13:44:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=366#comment-183</guid>
		<description><![CDATA[Salut,

J&#039;aime bien l&#039;article. C&#039;est tout à fait vrai. On est tous passé par là.


Merci]]></description>
		<content:encoded><![CDATA[<p>Salut,</p>
<p>J&rsquo;aime bien l&rsquo;article. C&rsquo;est tout à fait vrai. On est tous passé par là.</p>
<p>Merci</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le bon mot de passe par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p11962/dev/le-bon-mot-de-passe#comment-182</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Sat, 11 May 2013 18:15:06 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=356#comment-182</guid>
		<description><![CDATA[En effet ce soft est vraiment bien. Pour ma part, dans une moindre mesure, j&#039;utilise aussi une fonction de Firefox qui s&#039;appelle &quot;password principal&quot; je crois.

Pour la remarque sur Google et le SMS, c&#039;est un point très important. Chez Google, ils appellent ça le &quot;has&quot; de l&#039;anglais &quot;posséder&quot;. Le principe est d&#039;envoyer une double information sur un terminal que seul le destinataire peut posséder. Le téléphone portable est un bon exemple.]]></description>
		<content:encoded><![CDATA[<p>En effet ce soft est vraiment bien. Pour ma part, dans une moindre mesure, j&rsquo;utilise aussi une fonction de Firefox qui s&rsquo;appelle &laquo;&nbsp;password principal&nbsp;&raquo; je crois.</p>
<p>Pour la remarque sur Google et le SMS, c&rsquo;est un point très important. Chez Google, ils appellent ça le &laquo;&nbsp;has&nbsp;&raquo; de l&rsquo;anglais &laquo;&nbsp;posséder&nbsp;&raquo;. Le principe est d&rsquo;envoyer une double information sur un terminal que seul le destinataire peut posséder. Le téléphone portable est un bon exemple.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Le bon mot de passe par romaintaz</title>
		<link>https://blog.developpez.com/todaystip/p11962/dev/le-bon-mot-de-passe#comment-181</link>
		<dc:creator><![CDATA[romaintaz]]></dc:creator>
		<pubDate>Fri, 10 May 2013 19:47:40 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=356#comment-181</guid>
		<description><![CDATA[Rien ne vaut un bon soft pour créer et retenir ses mots de passe. Moi j&#039;utilise 1Password, et j&#039;en suis très content.
Un autre truc : avec Google, il est primordial de mettre en place la double authentification (avec un code reçu par SMS). Ca évite les mauvaises surprises si l&#039;on perd son mot de passe.]]></description>
		<content:encoded><![CDATA[<p>Rien ne vaut un bon soft pour créer et retenir ses mots de passe. Moi j&rsquo;utilise 1Password, et j&rsquo;en suis très content.<br />
Un autre truc : avec Google, il est primordial de mettre en place la double authentification (avec un code reçu par SMS). Ca évite les mauvaises surprises si l&rsquo;on perd son mot de passe.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Un Boolean peut prendre trois valeurs par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p11938/dev/java/un-boolean-peut-prendre-trois-valeurs#comment-180</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Thu, 25 Apr 2013 13:34:26 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=295#comment-180</guid>
		<description><![CDATA[Oui c&#039;est exact, forcément. Mais bizarrement aucun de mes élèves/collègues ne se fait avoir sur les chiffres... Et j&#039;ai le sentiment qu&#039;ils n&#039;utilisent pas du tout les chars...]]></description>
		<content:encoded><![CDATA[<p>Oui c&rsquo;est exact, forcément. Mais bizarrement aucun de mes élèves/collègues ne se fait avoir sur les chiffres&#8230; Et j&rsquo;ai le sentiment qu&rsquo;ils n&rsquo;utilisent pas du tout les chars&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Un Boolean peut prendre trois valeurs par rg77140</title>
		<link>https://blog.developpez.com/todaystip/p11938/dev/java/un-boolean-peut-prendre-trois-valeurs#comment-179</link>
		<dc:creator><![CDATA[rg77140]]></dc:creator>
		<pubDate>Thu, 25 Apr 2013 13:29:52 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=295#comment-179</guid>
		<description><![CDATA[Bonjour,

Il faut noter que ce problème lié à l&#039;autoboxing peut se produire avec d&#039;autre type primitifs qui ont une représentation Objet (Long, Integer, ...). Cette méthode renvoie une NPE sur le return (il vaut avouer qu&#039;une NPE  sur un return aussi simple peut surprendre) :

[cce_java]
public long calculMontant()
    {
        Long montant = null;

        // du code ici qui peut initialiser montant sous certaines conditions

        return montant;
    }
[/cce_java]
Romain.]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Il faut noter que ce problème lié à l&rsquo;autoboxing peut se produire avec d&rsquo;autre type primitifs qui ont une représentation Objet (Long, Integer, &#8230;). Cette méthode renvoie une NPE sur le return (il vaut avouer qu&rsquo;une NPE  sur un return aussi simple peut surprendre) :</p>
<div class="codecolorer-container java default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td><div class="java codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap"><span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000066; font-weight: bold;">long</span> calculMontant<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#123;</span><br />
&nbsp; &nbsp; &nbsp; &nbsp; <a href="http://www.google.com/search?hl=en&amp;q=allinurl%3Along+java.sun.com&amp;btnI=I%27m%20Feeling%20Lucky"><span style="color: #003399;">Long</span></a> montant <span style="color: #339933;">=</span> <span style="color: #000066; font-weight: bold;">null</span><span style="color: #339933;">;</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #666666; font-style: italic;">// du code ici qui peut initialiser montant sous certaines conditions</span><br />
<br />
&nbsp; &nbsp; &nbsp; &nbsp; <span style="color: #000000; font-weight: bold;">return</span> montant<span style="color: #339933;">;</span><br />
&nbsp; &nbsp; <span style="color: #009900;">&#125;</span></div></td></tr></tbody></table></div>
<p>Romain.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Devoxx France n&#8217;est pas un picnic par agoncal</title>
		<link>https://blog.developpez.com/todaystip/p11880/conference/devoxx-france-nest-pas-un-picnic#comment-52</link>
		<dc:creator><![CDATA[agoncal]]></dc:creator>
		<pubDate>Tue, 02 Apr 2013 18:28:42 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=47#comment-52</guid>
		<description><![CDATA[J&#039;ai été extremement transparent durant notre keynote : nous avions 74 conférences de disponibles, 14 étaient &quot;données&quot; au sponsors PREMIUM et MEDIUM (vous pouvez lire le terme &quot;partner slot&quot; dans l&#039;agenda) ce qui faisait 60 conférences sur 320 de proposé. Bref, un rejet de 82%.

Encore désolé pour les non-retenus. Nous allons cependant mettre en place un &quot;listing&quot; de speakers potentiels pour les JUGs de France et de Navarre. Sachez qu&#039;il y a plus de 20 JUGs en France (unique au monde avec cette densité là). Prenez votre sac à dos, votre MacBook Pro et parcourez les JUGs.

Et on se dit à 2014 ;o)]]></description>
		<content:encoded><![CDATA[<p>J&rsquo;ai été extremement transparent durant notre keynote : nous avions 74 conférences de disponibles, 14 étaient &laquo;&nbsp;données&nbsp;&raquo; au sponsors PREMIUM et MEDIUM (vous pouvez lire le terme &laquo;&nbsp;partner slot&nbsp;&raquo; dans l&rsquo;agenda) ce qui faisait 60 conférences sur 320 de proposé. Bref, un rejet de 82%.</p>
<p>Encore désolé pour les non-retenus. Nous allons cependant mettre en place un &laquo;&nbsp;listing&nbsp;&raquo; de speakers potentiels pour les JUGs de France et de Navarre. Sachez qu&rsquo;il y a plus de 20 JUGs en France (unique au monde avec cette densité là). Prenez votre sac à dos, votre MacBook Pro et parcourez les JUGs.</p>
<p>Et on se dit à 2014 ;o)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Devoxx France n&#8217;est pas un picnic par GabyKast</title>
		<link>https://blog.developpez.com/todaystip/p11880/conference/devoxx-france-nest-pas-un-picnic#comment-51</link>
		<dc:creator><![CDATA[GabyKast]]></dc:creator>
		<pubDate>Tue, 02 Apr 2013 13:39:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=47#comment-51</guid>
		<description><![CDATA[Je confirme, 150 talks retenus sur 550 c&#039;est une sélection à la dure.
Et juste pour les conférences, de tête on a une proposition de 50 sur 300.
Souvent ce sont des détails qui font la différence. La cohérence de la proposition, l&#039;intérêt (technique) et la fraîcheur du sujet,  le renom de speaker, a-t-il participé à Devoxx l&#039;an dernier, et même l&#039;orthographe (qui montre si celui qui propose le sujet fait attention à ce qu&#039;il fait), la fraîcheur du talk, la clarté du propos (qui montre la capacité de celui qui propose un talk à se faire comprendre), ce talk vient-il concurrencer un autre talk beaucoup plus renommé, la participation de la personne à l&#039;open source et aux communautés, est-ce qu&#039;on a des slides de sa proposition ou de propositions précédentes, mieux, y a-t-il une vidéo, y a-t-il une volonté de &quot;vendre&quot; son sujet ou juste de convaincre de la justesse technique, le speaker est-il bon (si quelqu&#039;un du comité de programme a vu le speaker on se fie en général à son avis)...
Comme disent les sportifs de haut niveau, &quot;ça se joue sur des détails&quot;.

Plus on trouve d&#039;informations plus le speaker a des chances d&#039;être sélectionné. De toutes façons à la fin c&#039;est le chat qui  choisit ;)]]></description>
		<content:encoded><![CDATA[<p>Je confirme, 150 talks retenus sur 550 c&rsquo;est une sélection à la dure.<br />
Et juste pour les conférences, de tête on a une proposition de 50 sur 300.<br />
Souvent ce sont des détails qui font la différence. La cohérence de la proposition, l&rsquo;intérêt (technique) et la fraîcheur du sujet,  le renom de speaker, a-t-il participé à Devoxx l&rsquo;an dernier, et même l&rsquo;orthographe (qui montre si celui qui propose le sujet fait attention à ce qu&rsquo;il fait), la fraîcheur du talk, la clarté du propos (qui montre la capacité de celui qui propose un talk à se faire comprendre), ce talk vient-il concurrencer un autre talk beaucoup plus renommé, la participation de la personne à l&rsquo;open source et aux communautés, est-ce qu&rsquo;on a des slides de sa proposition ou de propositions précédentes, mieux, y a-t-il une vidéo, y a-t-il une volonté de &laquo;&nbsp;vendre&nbsp;&raquo; son sujet ou juste de convaincre de la justesse technique, le speaker est-il bon (si quelqu&rsquo;un du comité de programme a vu le speaker on se fie en général à son avis)&#8230;<br />
Comme disent les sportifs de haut niveau, &laquo;&nbsp;ça se joue sur des détails&nbsp;&raquo;.</p>
<p>Plus on trouve d&rsquo;informations plus le speaker a des chances d&rsquo;être sélectionné. De toutes façons à la fin c&rsquo;est le chat qui  choisit <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Les 10 pièges à éviter dans un projet agile par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p11525/conference/les-10-pieges-a-eviter-dans-un-projet-agile#comment-19</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Sun, 25 Nov 2012 08:30:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=39#comment-19</guid>
		<description><![CDATA[Bonjour et merci pour ces précisions constructives.

Pour le point (2) il n&#039;est pas question de pinailler sur le coût mais d&#039;en être conscient. En effet, trop de &quot;chefs&quot; oublient de compter la durée des différentes cérémonies dans le budget. Elles sont pourtant indispensables et elles coûtent cher une fois mises bout à bout. Ce coût est toutefois compensé ailleurs et assumé.

Je n&#039;ai pas encore l&#039;article dont tu parles à propos du point (5) mais je voudrais donner mon avis personnelle. À mon sens, la confiance ne devrait jamais exister dans un projet. La méfiance n&#039;a pas sa place non plus. Je m&#039;explique, on dispose d&#039;un grand nombre d&#039;outils pour tester les applications avec des méthodes comme 3T et TDD à leur tête. Je demande donc toujours à mes clients de ne jamais me faire confiance mais d&#039;exiger des preuves. Ceci doit rester dans la limite du raisonnable.

Quant à la confiance entre les membres de l&#039;équipe, j&#039;aurais plutôt tendance à me baser sur l&#039;historique en me disant qu&#039;une personne va fonctionner pareil d&#039;un sprint sur l&#039;autre. Pour un &quot;chef&quot;, le pire truc, ce n&#039;est ni les diva ni les blaireaux mais les lunatiques.

Pour le point (7), je répondrais simplement qu&#039;il ne faut pas faire de scrum (ou d&#039;agile) si on ne veut pas en suivre les règles de base. Les PO qui demandent des petits trucs en plus, sauf quand c&#039;est vraiment indispensable, c&#039;est souvent pour rattraper leurs conneries ou pour gagner des points bidons. Le rôle du chef, ou du scrum´master, c&#039;est de préserver l&#039;équipe de ce genre de connerie. On ne va pas foutre en l&#039;air le projet pour faire plaisir à Intel. 

Alors on peut se dire qu&#039;une fois ou deux, ça passe encore mais c&#039;est la porte ouverte aux abus. Bien entendu, il faut rester ouvert aux événements importants. Si on prend Kanban, on a justement la première ligne qui est réservée pour des urgences. Notez que je parle d&#039;urgence et pas de aire plaisir à untel. 

Pour la demo (8) c&#039;est justement une erreur de faire un raccourci entre une fonction qui marche au sens et la demo et une fonction qui marche au sens général. Dans la demo, on te montre les cas qui fonctionnent, ceux la peuvent passer en prod. Mais les cas annexes, aux limites ou non, c&#039;est une autre histoire. 

Je vais donner un exemple abusif mais concret pour expliquer. Disons qu&#039;on calcule le factoriel d&#039;un entier positif. On fait la demo avec factoriel de 3 et de 5. Ça me parait légitime de penser que factoriel de 4 va marcher aussi. Mais on a rien dit à propos de 6, 7, 8... Et beaucoup de gens croient à tort que c&#039;est implicite.]]></description>
		<content:encoded><![CDATA[<p>Bonjour et merci pour ces précisions constructives.</p>
<p>Pour le point (2) il n&rsquo;est pas question de pinailler sur le coût mais d&rsquo;en être conscient. En effet, trop de &laquo;&nbsp;chefs&nbsp;&raquo; oublient de compter la durée des différentes cérémonies dans le budget. Elles sont pourtant indispensables et elles coûtent cher une fois mises bout à bout. Ce coût est toutefois compensé ailleurs et assumé.</p>
<p>Je n&rsquo;ai pas encore l&rsquo;article dont tu parles à propos du point (5) mais je voudrais donner mon avis personnelle. À mon sens, la confiance ne devrait jamais exister dans un projet. La méfiance n&rsquo;a pas sa place non plus. Je m&rsquo;explique, on dispose d&rsquo;un grand nombre d&rsquo;outils pour tester les applications avec des méthodes comme 3T et TDD à leur tête. Je demande donc toujours à mes clients de ne jamais me faire confiance mais d&rsquo;exiger des preuves. Ceci doit rester dans la limite du raisonnable.</p>
<p>Quant à la confiance entre les membres de l&rsquo;équipe, j&rsquo;aurais plutôt tendance à me baser sur l&rsquo;historique en me disant qu&rsquo;une personne va fonctionner pareil d&rsquo;un sprint sur l&rsquo;autre. Pour un &laquo;&nbsp;chef&nbsp;&raquo;, le pire truc, ce n&rsquo;est ni les diva ni les blaireaux mais les lunatiques.</p>
<p>Pour le point (7), je répondrais simplement qu&rsquo;il ne faut pas faire de scrum (ou d&rsquo;agile) si on ne veut pas en suivre les règles de base. Les PO qui demandent des petits trucs en plus, sauf quand c&rsquo;est vraiment indispensable, c&rsquo;est souvent pour rattraper leurs conneries ou pour gagner des points bidons. Le rôle du chef, ou du scrum´master, c&rsquo;est de préserver l&rsquo;équipe de ce genre de connerie. On ne va pas foutre en l&rsquo;air le projet pour faire plaisir à Intel. </p>
<p>Alors on peut se dire qu&rsquo;une fois ou deux, ça passe encore mais c&rsquo;est la porte ouverte aux abus. Bien entendu, il faut rester ouvert aux événements importants. Si on prend Kanban, on a justement la première ligne qui est réservée pour des urgences. Notez que je parle d&rsquo;urgence et pas de aire plaisir à untel. </p>
<p>Pour la demo (8) c&rsquo;est justement une erreur de faire un raccourci entre une fonction qui marche au sens et la demo et une fonction qui marche au sens général. Dans la demo, on te montre les cas qui fonctionnent, ceux la peuvent passer en prod. Mais les cas annexes, aux limites ou non, c&rsquo;est une autre histoire. </p>
<p>Je vais donner un exemple abusif mais concret pour expliquer. Disons qu&rsquo;on calcule le factoriel d&rsquo;un entier positif. On fait la demo avec factoriel de 3 et de 5. Ça me parait légitime de penser que factoriel de 4 va marcher aussi. Mais on a rien dit à propos de 6, 7, 8&#8230; Et beaucoup de gens croient à tort que c&rsquo;est implicite.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Les 10 pièges à éviter dans un projet agile par _oaz_</title>
		<link>https://blog.developpez.com/todaystip/p11525/conference/les-10-pieges-a-eviter-dans-un-projet-agile#comment-16</link>
		<dc:creator><![CDATA[_oaz_]]></dc:creator>
		<pubDate>Sat, 24 Nov 2012 10:38:14 +0000</pubDate>
		<guid isPermaLink="false">http://blog.developpez.com/todaystip/?p=39#comment-16</guid>
		<description><![CDATA[Bonjour,

Certains des points présentés dans ce billet risquent, à mon avis, d&#039;apporter de la confusion pour qui débuterait dans l&#039;agilité.

#2 : se focaliser sur le coût est un plus grand risque que d&#039;oublier de tenir des comptes précis. Le plus important c&#039;est la *valeur produite* pour un coût fixé, quel que soit celui-ci. Si on a une équipe de 8 personnes, intéressons-nous à ce qu&#039;elles peuvent concrètement apporter à des utilisateurs en une itération et essayons d&#039;oublier les comptes d&#039;apothicaires.

#5 : on donne souvent à l&#039;engagement une place trop importante par rapport à la confiance nécessaire entre les membres de l&#039;équipe. Plus de détails ici : http://agilitateur.azeau.com/post/2012/10/15/Engagez-vous-ils-disaient...

#7 : Il ne faut pas oublier que s&#039;il n&#039;y a pas de client, on ne travaille pas. C&#039;est peut être une banalité mais ça peut être utile de le répéter de temps en temps. Donc, l&#039;objectif est quand même quelque part de faire plaisir au client. A partir de là, on peut légitimement se demander en quoi une tâche est importante si elle n&#039;est pas en accord avec cet objectif.

#8 : Quand on arrive à une démo, c&#039;est que le logiciel est potentiellement livrable. Cela signifie que les fonctionnalités sont terminées, au sens où elles sont réellement utilisables dans le monde réel même si elles ne sont pas aussi complètes que ce que le client attend sur le long terme.

#10 : le chef doit surtout faire en sorte, dans la durée, d&#039;être de moins en moins utile en tant que &quot;chef&quot;. L&#039;autonomie d&#039;une équipe est à ce prix. Sur la place des chefs, je conseille vivement la lecture de ce livre sur le lean management : http://informatique-conviviale.eyrolles.com/]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Certains des points présentés dans ce billet risquent, à mon avis, d&rsquo;apporter de la confusion pour qui débuterait dans l&rsquo;agilité.</p>
<p>#2 : se focaliser sur le coût est un plus grand risque que d&rsquo;oublier de tenir des comptes précis. Le plus important c&rsquo;est la *valeur produite* pour un coût fixé, quel que soit celui-ci. Si on a une équipe de 8 personnes, intéressons-nous à ce qu&rsquo;elles peuvent concrètement apporter à des utilisateurs en une itération et essayons d&rsquo;oublier les comptes d&rsquo;apothicaires.</p>
<p>#5 : on donne souvent à l&rsquo;engagement une place trop importante par rapport à la confiance nécessaire entre les membres de l&rsquo;équipe. Plus de détails ici : <a href="http://agilitateur.azeau.com/post/2012/10/15/Engagez-vous-ils-disaient" rel="nofollow">http://agilitateur.azeau.com/post/2012/10/15/Engagez-vous-ils-disaient</a>&#8230;</p>
<p>#7 : Il ne faut pas oublier que s&rsquo;il n&rsquo;y a pas de client, on ne travaille pas. C&rsquo;est peut être une banalité mais ça peut être utile de le répéter de temps en temps. Donc, l&rsquo;objectif est quand même quelque part de faire plaisir au client. A partir de là, on peut légitimement se demander en quoi une tâche est importante si elle n&rsquo;est pas en accord avec cet objectif.</p>
<p>#8 : Quand on arrive à une démo, c&rsquo;est que le logiciel est potentiellement livrable. Cela signifie que les fonctionnalités sont terminées, au sens où elles sont réellement utilisables dans le monde réel même si elles ne sont pas aussi complètes que ce que le client attend sur le long terme.</p>
<p>#10 : le chef doit surtout faire en sorte, dans la durée, d&rsquo;être de moins en moins utile en tant que &laquo;&nbsp;chef&nbsp;&raquo;. L&rsquo;autonomie d&rsquo;une équipe est à ce prix. Sur la place des chefs, je conseille vivement la lecture de ce livre sur le lean management : <a href="http://informatique-conviviale.eyrolles.com/" rel="nofollow">http://informatique-conviviale.eyrolles.com/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur @ExtensionMethod de Lombok-pg par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p11165/dev/java/extensionmethod_de_lombok_pg#comment-9</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Fri, 20 Jul 2012 08:05:43 +0000</pubDate>
		<guid isPermaLink="false">#comment-9</guid>
		<description><![CDATA[Regarde http://thierry-leriche-dessirier.developpez.com/tutoriels/java/simplifier-code-guava-lombok/]]></description>
		<content:encoded><![CDATA[<p>Regarde <a href="http://thierry-leriche-dessirier.developpez.com/tutoriels/java/simplifier-code-guava-lombok/" rel="nofollow">http://thierry-leriche-dessirier.developpez.com/tutoriels/java/simplifier-code-guava-lombok/</a></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur @ExtensionMethod de Lombok-pg par jpoulson</title>
		<link>https://blog.developpez.com/todaystip/p11165/dev/java/extensionmethod_de_lombok_pg#comment-8</link>
		<dc:creator><![CDATA[jpoulson]]></dc:creator>
		<pubDate>Fri, 20 Jul 2012 05:24:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-8</guid>
		<description><![CDATA[Bonjour,&lt;br /&gt;
&lt;br /&gt;
Je ne connais pas ce framework. Si j&#039;ai bien compris l&#039;annotation permet d&#039;ajouter des méthodes à un bean ou d&#039;ajouter un genre de wrapper. Mais que est l&#039;avantage de cette approche ? Dans l&#039;exemple que tu as donné il semble que cela remplace une méthode utilitaire.]]></description>
		<content:encoded><![CDATA[<p>Bonjour,</p>
<p>Je ne connais pas ce framework. Si j&rsquo;ai bien compris l&rsquo;annotation permet d&rsquo;ajouter des méthodes à un bean ou d&rsquo;ajouter un genre de wrapper. Mais que est l&rsquo;avantage de cette approche ? Dans l&rsquo;exemple que tu as donné il semble que cela remplace une méthode utilitaire.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Un dernier fantastique café à Devoxx France 2012 par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p10972/conference/un_dernier_fantastique_cafe_a_devoxx_fra_2012#comment-14</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Thu, 26 Apr 2012 08:10:01 +0000</pubDate>
		<guid isPermaLink="false">#comment-14</guid>
		<description><![CDATA[Les castcodeurs disent que le wall a été éteint suite au nombre grandissant de messages négatifs envers la keynote d&#039;ibm.]]></description>
		<content:encoded><![CDATA[<p>Les castcodeurs disent que le wall a été éteint suite au nombre grandissant de messages négatifs envers la keynote d&rsquo;ibm.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Un dernier fantastique café à Devoxx France 2012 par lunatix</title>
		<link>https://blog.developpez.com/todaystip/p10972/conference/un_dernier_fantastique_cafe_a_devoxx_fra_2012#comment-13</link>
		<dc:creator><![CDATA[lunatix]]></dc:creator>
		<pubDate>Fri, 20 Apr 2012 20:12:26 +0000</pubDate>
		<guid isPermaLink="false">#comment-13</guid>
		<description><![CDATA[la rumeur dit que le tweet wall était pas KO, mais plutôt éteint suite a un tweet bash ;)]]></description>
		<content:encoded><![CDATA[<p>la rumeur dit que le tweet wall était pas KO, mais plutôt éteint suite a un tweet bash <img src="https://blog.developpez.com/todaystip/wp-includes/images/smilies/icon_wink.gif" alt=";)" class="wp-smiley" /></p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-7</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Fri, 19 Nov 2010 12:15:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-7</guid>
		<description><![CDATA[Déjà le (1) ne compile pas. Ca c&#039;était juste pour l&#039;échauffement. Après si je te dis quoi est faux, ça te donne la solution pour tout.]]></description>
		<content:encoded><![CDATA[<p>Déjà le (1) ne compile pas. Ca c&rsquo;était juste pour l&rsquo;échauffement. Après si je te dis quoi est faux, ça te donne la solution pour tout.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par Bourgui</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-6</link>
		<dc:creator><![CDATA[Bourgui]]></dc:creator>
		<pubDate>Fri, 19 Nov 2010 12:12:41 +0000</pubDate>
		<guid isPermaLink="false">#comment-6</guid>
		<description><![CDATA[qu&#039;est ce que j&#039;ai faux ? tout ?]]></description>
		<content:encoded><![CDATA[<p>qu&rsquo;est ce que j&rsquo;ai faux ? tout ?</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-5</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Fri, 19 Nov 2010 12:10:04 +0000</pubDate>
		<guid isPermaLink="false">#comment-5</guid>
		<description><![CDATA[toujours faux lol]]></description>
		<content:encoded><![CDATA[<p>toujours faux lol</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par Bourgui</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-4</link>
		<dc:creator><![CDATA[Bourgui]]></dc:creator>
		<pubDate>Fri, 19 Nov 2010 11:07:31 +0000</pubDate>
		<guid isPermaLink="false">#comment-4</guid>
		<description><![CDATA[le 1/ ne marche pas car il n&#039;y a pas de valeur assignée, mais selon les langage i vaudra peut etre 0.&lt;br /&gt;
&lt;br /&gt;
le 2/ le ++ est fait avant l&#039;instruction donc au moment de l&#039;assignation i vaut 2.&lt;br /&gt;
&lt;br /&gt;
le 3/ pareil mais vu qu&#039;il y a +1...&lt;br /&gt;
&lt;br /&gt;
le 4 le ++ est fait apres quand il est avant le i donc ça fait i = 1 + 1 + 2]]></description>
		<content:encoded><![CDATA[<p>le 1/ ne marche pas car il n&rsquo;y a pas de valeur assignée, mais selon les langage i vaudra peut etre 0.</p>
<p>le 2/ le ++ est fait avant l&rsquo;instruction donc au moment de l&rsquo;assignation i vaut 2.</p>
<p>le 3/ pareil mais vu qu&rsquo;il y a +1&#8230;</p>
<p>le 4 le ++ est fait apres quand il est avant le i donc ça fait i = 1 + 1 + 2</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-3</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Thu, 18 Nov 2010 16:12:24 +0000</pubDate>
		<guid isPermaLink="false">#comment-3</guid>
		<description><![CDATA[&lt;br /&gt;
Ne trichez pas. Vous n&#039;avez pas le droit de copier le code dans Eclipse pour avoir la solution et ensuite en déduire l&#039;explication.]]></description>
		<content:encoded><![CDATA[<p>
Ne trichez pas. Vous n&rsquo;avez pas le droit de copier le code dans Eclipse pour avoir la solution et ensuite en déduire l&rsquo;explication.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-2</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Thu, 18 Nov 2010 16:10:43 +0000</pubDate>
		<guid isPermaLink="false">#comment-2</guid>
		<description><![CDATA[&lt;br /&gt;
&lt;br /&gt;
Il ne faut pas juste trouver la solution (qui n&#039;est pas &quot;ko-1-3-4&quot; désolé) mais l&#039;expliquer.&lt;br /&gt;
&lt;br /&gt;
Je pense que la plus dure est testCalcul2(). ]]></description>
		<content:encoded><![CDATA[<p>Il ne faut pas juste trouver la solution (qui n&rsquo;est pas &laquo;&nbsp;ko-1-3-4&Prime; désolé) mais l&rsquo;expliquer.</p>
<p>Je pense que la plus dure est testCalcul2(). </p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Faire pleurer vos collègues par Bourgui</title>
		<link>https://blog.developpez.com/todaystip/p9511/dev/faire_pleurer_vos_collegues#comment-1</link>
		<dc:creator><![CDATA[Bourgui]]></dc:creator>
		<pubDate>Thu, 18 Nov 2010 15:24:47 +0000</pubDate>
		<guid isPermaLink="false">#comment-1</guid>
		<description><![CDATA[le premier ne marche pas (pas sur), genre erreur&lt;br /&gt;
le deuxième &quot;1&quot;&lt;br /&gt;
le troisieme &quot;3&quot;&lt;br /&gt;
le quatrieme &quot;4&quot;&lt;br /&gt;
&lt;br /&gt;
]]></description>
		<content:encoded><![CDATA[<p>le premier ne marche pas (pas sur), genre erreur<br />
le deuxième &laquo;&nbsp;1&nbsp;&raquo;<br />
le troisieme &laquo;&nbsp;3&nbsp;&raquo;<br />
le quatrieme &laquo;&nbsp;4&nbsp;&raquo;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Des itérators et des boucles par adiguba</title>
		<link>https://blog.developpez.com/todaystip/p9440/dev/title_181#comment-12</link>
		<dc:creator><![CDATA[adiguba]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 11:06:57 +0000</pubDate>
		<guid isPermaLink="false">#comment-12</guid>
		<description><![CDATA[L&#039;interface Iterable n&#039;est apparut qu&#039;avec Java 5.0. Donc les librairies plus anciennes utilisaient l&#039;Iterator directement.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a++]]></description>
		<content:encoded><![CDATA[<p>L&rsquo;interface Iterable n&rsquo;est apparut qu&rsquo;avec Java 5.0. Donc les librairies plus anciennes utilisaient l&rsquo;Iterator directement.</p>
<p>
a++</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Des itérators et des boucles par thierryler</title>
		<link>https://blog.developpez.com/todaystip/p9440/dev/title_181#comment-11</link>
		<dc:creator><![CDATA[thierryler]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 10:31:38 +0000</pubDate>
		<guid isPermaLink="false">#comment-11</guid>
		<description><![CDATA[Bonne question. Il se trouve qu&#039;on travaille (là où je suis) avec des lib qui nous donnent des itérators directement. Je ne sais pas pourquoi. Toutes les raisons que je peux imaginer ne s&#039;applique pas à ce cas donc... On fait avec. Du coup soit on utilise la méthode iterate(), qui peut être appliquée à d&#039;autres types comme tu le signales, soit on l&#039;englobe directement... C&#039;est un peu au choix...]]></description>
		<content:encoded><![CDATA[<p>Bonne question. Il se trouve qu&rsquo;on travaille (là où je suis) avec des lib qui nous donnent des itérators directement. Je ne sais pas pourquoi. Toutes les raisons que je peux imaginer ne s&rsquo;applique pas à ce cas donc&#8230; On fait avec. Du coup soit on utilise la méthode iterate(), qui peut être appliquée à d&rsquo;autres types comme tu le signales, soit on l&rsquo;englobe directement&#8230; C&rsquo;est un peu au choix&#8230;</p>
]]></content:encoded>
	</item>
	<item>
		<title>Commentaires sur Des itérators et des boucles par adiguba</title>
		<link>https://blog.developpez.com/todaystip/p9440/dev/title_181#comment-10</link>
		<dc:creator><![CDATA[adiguba]]></dc:creator>
		<pubDate>Tue, 02 Nov 2010 10:23:26 +0000</pubDate>
		<guid isPermaLink="false">#comment-10</guid>
		<description><![CDATA[Salut,&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Pourquoi ne pas simplement retourner la liste déclarée en Iterable :&lt;br /&gt;
&lt;blockquote&gt;&lt;code&gt;private Iterable amisIterable() { &#160;&lt;br /&gt;
&#160; return amis; &#160;&lt;br /&gt;
}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
Si c&#039;est pour une question de sécurité (afin d&#039;éviter les casts méchant), il suffit d&#039;englober cela dans une nouvelle instance d&#039;Iterable :&lt;br /&gt;
&lt;blockquote&gt;&lt;code&gt;private Iterable amisIterable() { &#160;&lt;br /&gt;
&#160; return new Iterable() {&#160;&lt;br /&gt;
&#160;   @Overrides public Iterator iterator() {&#160;&lt;br /&gt;
&#160;     return amis.iterator();&#160;&lt;br /&gt;
&#160;   }&#160;&lt;br /&gt;
&#160;  };&#160;&lt;br /&gt;
}&lt;/code&gt;&lt;/blockquote&gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bien sûr le code de la méthode iterable() reste utile avec les APIs existantes retournant déjà un Iterator. Et la même astuce s’applique également à d&#039;autres types d&#039;objets (Enumeration par exemple)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
a++]]></description>
		<content:encoded><![CDATA[<p>Salut,</p>
<p>
Pourquoi ne pas simplement retourner la liste déclarée en Iterable :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private Iterable amisIterable() { &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; return amis; &amp;nbsp;&lt;br /&gt;<br />
}</div></td></tr></tbody></table></div>
</blockquote>
<p>Si c&rsquo;est pour une question de sécurité (afin d&rsquo;éviter les casts méchant), il suffit d&rsquo;englober cela dans une nouvelle instance d&rsquo;Iterable :</p>
<blockquote>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><table cellspacing="0" cellpadding="0"><tbody><tr><td style="padding:5px;text-align:center;color:#888888;background-color:#EEEEEE;border-right: 1px solid #9F9F9F;font: normal 12px/1.4em Monaco, Lucida Console, monospace;"><div>1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">private Iterable amisIterable() { &amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; return new Iterable() {&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; @Overrides public Iterator iterator() {&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; &nbsp; return amis.iterator();&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp; }&amp;nbsp;&lt;br /&gt;<br />
&amp;nbsp; &nbsp;};&amp;nbsp;&lt;br /&gt;<br />
}</div></td></tr></tbody></table></div>
</blockquote>
<p>Bien sûr le code de la méthode iterable() reste utile avec les APIs existantes retournant déjà un Iterator. Et la même astuce s’applique également à d&rsquo;autres types d&rsquo;objets (Enumeration par exemple)</p>
<p>
a++</p>
]]></content:encoded>
	</item>
</channel>
</rss>
