<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	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/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Blog édité par Le_Phasme</title>
	<atom:link href="https://blog.developpez.com/le_phasme/feed" rel="self" type="application/rss+xml" />
	<link>https://blog.developpez.com/le_phasme</link>
	<description></description>
	<lastBuildDate>Fri, 29 Jan 2010 09:17:28 +0000</lastBuildDate>
	<language>fr-FR</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>https://wordpress.org/?v=4.1.42</generator>
	<item>
		<title>[VB.NET] Utilisation du With &#8230; End With</title>
		<link>https://blog.developpez.com/le_phasme/p8565/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/vb_net_utilisation_du_with_end_with</link>
		<comments>https://blog.developpez.com/le_phasme/p8565/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/vb_net_utilisation_du_with_end_with#comments</comments>
		<pubDate>Wed, 27 Jan 2010 17:12:28 +0000</pubDate>
		<dc:creator><![CDATA[le_phasme]]></dc:creator>
				<category><![CDATA[Optimisation & Clarté de Code]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Si vous avez dans votre code une suite d&#8217;instruction du style: Form1.TextBox1.BackColor= Red Form1.TextBox1.Text=&#34;BoBo&#34; Form1.TextBox1.Visible= True Pensez à utiliser With &#8230; End With : With Form1.TextBox1 .BackColor= Red .Text=&#34;BoBo&#34; .Visible= True End With Ceci permettra de gagner en performance car l&#8217;objet n&#8217;est pas ré-évalué à chaque fois et votre code gagnera en clarté ! Par exemple, dans un cas comme celui ci : Me.txtSqf.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptSqf.ToString Me.txtNbP.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptNbpeopleMin.ToString Me.txtNbPMax.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptNbpeoplemax.ToString Me.txtFloor.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptFloor.ToString [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Si vous avez dans votre code une suite d&rsquo;instruction du style: </strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Form1.TextBox1.BackColor= Red <br />
Form1.TextBox1.Text=&quot;BoBo&quot; <br />
Form1.TextBox1.Visible= True</div></div>
<p><strong>Pensez à utiliser With &#8230; End With : </strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">With Form1.TextBox1 <br />
.BackColor= Red <br />
.Text=&quot;BoBo&quot; <br />
.Visible= True <br />
End With</div></div>
<p><strong>Ceci permettra de gagner en performance car l&rsquo;objet n&rsquo;est pas ré-évalué à chaque fois et votre code gagnera en clarté !</strong></p>
<p>Par exemple, dans un cas comme celui ci :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;height:300px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Me.txtSqf.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptSqf.ToString <br />
Me.txtNbP.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptNbpeopleMin.ToString <br />
Me.txtNbPMax.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptNbpeoplemax.ToString <br />
Me.txtFloor.Text = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptFloor.ToString <br />
Me.chkTV.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptTv <br />
Me.chkCable.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptCable <br />
Me.chkVCR.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptVcr <br />
Me.chkDVD.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptDvd <br />
Me.chkStereo.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptStereo <br />
Me.chkPhone.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptPhone <br />
Me.chkFax.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptFax <br />
Me.chkADSL.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptAdsl <br />
Me.chkAC.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptAircond <br />
Me.chkFirePl.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptFireplace <br />
Me.chkWash.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptWasher <br />
Me.chkDryer.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptDryer <br />
Me.chkDish.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptDishwasher <br />
Me.chkPets.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptPets <br />
Me.chkSmok.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptSmoking <br />
Me.chkElev.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptElevator <br />
Me.chkPark.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptParking <br />
Me.chkTerr.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptTerrace <br />
Me.chkBalc.Checked = oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt.AptBalcony</div></div>
<p>Cela s’optimise de la facon suivante :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">With oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt <br />
txtSqf.Text = .AptSqf.ToString <br />
&nbsp; &nbsp; &nbsp;… <br />
chkBalc.Checked = .AptBalcony <br />
End With</div></div>
<p><strong>« oDossierAptFormGeneral.DossierAptForm.DossierApt.CurrentApt » est  évalué 1 fois au lieu de 22 fois rien que pour cette portion de code et le code devient nettement plus agréable à lire ! </strong></p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>7</slash:comments>
		</item>
		<item>
		<title>[VB.NET] Implémenter la méthode Dispose dans une classe</title>
		<link>https://blog.developpez.com/le_phasme/p8542/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/implementer_la_methode_dispose_dans_une</link>
		<comments>https://blog.developpez.com/le_phasme/p8542/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/implementer_la_methode_dispose_dans_une#comments</comments>
		<pubDate>Thu, 21 Jan 2010 10:04:37 +0000</pubDate>
		<dc:creator><![CDATA[le_phasme]]></dc:creator>
				<category><![CDATA[Optimisation & Clarté de Code]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[La libération mémoire d&#8217;une classe lors de sa destruction peut être rendue quasi immédiate en implémentant une méthode dispose à cette classe. Pour cette exemple, nous allons implémenter cette méthode dans une classe nommé ClsDossierRequest Public Class ClsDossierRequest &#160; &#160; Implements IDisposable &#160; &#160; &#160; &#160; &#160; 'Propriétés exemples &#160; &#160; Private oDossierSearchRequest As Object &#160; &#160; Private OLstElem as generic.list(of String) &#160; Sub Dispose() Implements System.IDisposable.Dispose &#160; &#160; &#160; oDossierSearchRequest=nothing &#160; &#160; &#160; OlstElem.clear [&#8230;]]]></description>
				<content:encoded><![CDATA[<p>La libération mémoire d&rsquo;une classe lors de sa destruction peut être rendue quasi immédiate en implémentant une méthode dispose à cette classe.<br />
Pour cette exemple, nous allons implémenter cette méthode dans une classe nommé ClsDossierRequest</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Public Class ClsDossierRequest <br />
&nbsp; &nbsp; Implements IDisposable <br />
&nbsp; &nbsp; &nbsp;<br />
&nbsp; &nbsp; 'Propriétés exemples <br />
&nbsp; &nbsp; Private oDossierSearchRequest As Object <br />
&nbsp; &nbsp; Private OLstElem as generic.list(of String) <br />
&nbsp;<br />
Sub Dispose() Implements System.IDisposable.Dispose <br />
&nbsp; &nbsp; &nbsp; oDossierSearchRequest=nothing <br />
&nbsp; &nbsp; &nbsp; OlstElem.clear <br />
End Sub <br />
&nbsp;<br />
End Class</div></div>
<p>Et voila comment libérer plus rapidement la mémoire de votre application :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Public Class MaClasseParente <br />
&nbsp;<br />
Private oMonDossierRequest as clsDossierRequest <br />
&nbsp;<br />
Sub New <br />
'On construit l'objet <br />
oMonDossierRequest =new clsdossierrequest <br />
'On libere l'objet <br />
oMonDossierRequest.dispose <br />
End sub <br />
&nbsp;<br />
end Class</div></div>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>3</slash:comments>
		</item>
		<item>
		<title>[VB.NET] Allez à l&#8217;essentiel !</title>
		<link>https://blog.developpez.com/le_phasme/p8548/developpement/allez_a_l_essentiel</link>
		<comments>https://blog.developpez.com/le_phasme/p8548/developpement/allez_a_l_essentiel#comments</comments>
		<pubDate>Fri, 22 Jan 2010 12:13:42 +0000</pubDate>
		<dc:creator><![CDATA[le_phasme]]></dc:creator>
				<category><![CDATA[Développement]]></category>
		<category><![CDATA[Optimisation & Clarté de Code]]></category>

		<guid isPermaLink="false"></guid>
		<description><![CDATA[Exemples d&#8217;optimisations divers VB.NET Exemple 1 : &#160; &#160; Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String &#160; &#160; &#160; &#160; Dim rqSessionName = (From Agent In dtct.Agent _ &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;Where Agent.AgentID = iAgentID _ &#160; &#160; &#160; &#160; &#160; &#160; &#160; &#160;Select Agent.AgentSession).Single &#160; &#160; &#160; &#160; Return rqSessionName &#160; &#160; End Function La variable semble vraiment inutile &#160; &#160; Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String &#160; &#160; [&#8230;]]]></description>
				<content:encoded><![CDATA[<p><strong>Exemples d&rsquo;optimisations divers VB.NET</strong></p>
<p><strong>Exemple 1  : </strong></p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String <br />
&nbsp; &nbsp; &nbsp; &nbsp; Dim rqSessionName = (From Agent In dtct.Agent _ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Where Agent.AgentID = iAgentID _ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Select Agent.AgentSession).Single <br />
&nbsp; &nbsp; &nbsp; &nbsp; Return rqSessionName <br />
&nbsp; &nbsp; End Function</div></div>
<p>La variable semble vraiment inutile</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String <br />
&nbsp; &nbsp; &nbsp; &nbsp; return (From Agent In dtct.Agent _ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Where Agent.AgentID = iAgentID _ <br />
&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;Select Agent.AgentSession).Single <br />
&nbsp; &nbsp; End Function</div></div>
<p><strong>Exemple 2  : </strong></p>
<p>Etat :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; Dim Test(5) As String <br />
&nbsp; &nbsp; &nbsp; &nbsp; Dim Result as String <br />
&nbsp; &nbsp; &nbsp; &nbsp; Test(0) = &quot;A&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Test(1) = &quot;B&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Test(2) = &quot;C&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Test(3) = &quot;D&quot; <br />
&nbsp; &nbsp; &nbsp; &nbsp; Test(4) = &quot;E&quot;</div></div>
<p>Nous cherchons à concaténer les chaines, on voit régulièrement :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Result=Test(0)&amp; &quot;-&quot;&amp;Test(1)&amp; &quot;-&quot;&amp;Test(2)&amp; &quot;-&quot;&amp;Test(3)&amp; &quot;-&quot;&amp;Test(4)</div></div>
<p>ou encore</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Result=&quot;&quot; <br />
For i=0 to 4 <br />
Result=Result &amp; &quot;-&quot; &amp; Test(i) <br />
Next</div></div>
<p>Mais on doit normalement employer tout simplement :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">&nbsp; &nbsp; &nbsp; &nbsp; Result = String.Join(&quot;-&quot;, Test)</div></div>
<p><strong>Exemple 3  : </strong></p>
<p>Très fréquemment, on voit également :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">Si MaCondition est vrai alors <br />
MonObjet=vrai <br />
sinon &nbsp;<br />
MonObjet=Faux <br />
Fin Si</div></div>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">If oLstAssocRqInt.IndexOf(Assoc) = iIndexDefaultMail Then <br />
&nbsp; &nbsp; &nbsp;FicheInterv.SelectedEmail1 = True <br />
End If</div></div>
<p>devrait en fait devenir :</p>
<div class="codecolorer-container text default" style="overflow:auto;white-space:nowrap;border:1px solid #9F9F9F;width:435px;"><div class="text codecolorer" style="padding:5px;font:normal 12px/1.4em Monaco, Lucida Console, monospace;white-space:nowrap">FicheInterv.SelectedEmail1=(oLstAssocRqInt.IndexOf(Assoc) = iIndexDefaultMail)</div></div>
<p>J&rsquo;espère que ces quelques exemples vous seront utiles.</p>
]]></content:encoded>
			<wfw:commentRss></wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
	</channel>
</rss>
