<?xml version="1.0" encoding="UTF-8"?><feed
  xmlns="http://www.w3.org/2005/Atom"
  xmlns:thr="http://purl.org/syndication/thread/1.0"
  xml:lang="fr-FR"
  xml:base="https://blog.developpez.com/le_phasme/wp-atom.php"
   >
	<title type="text">Blog édité par Le_Phasme</title>
	<subtitle type="text"></subtitle>

	<updated>2010-01-29T09:17:28Z</updated>

	<link rel="alternate" type="text/html" href="https://blog.developpez.com/le_phasme" />
	<id>https://blog.developpez.com/le_phasme/feed/atom</id>
	<link rel="self" type="application/atom+xml" href="https://blog.developpez.com/le_phasme/feed/atom" />

	<generator uri="https://wordpress.org/" version="4.1.42">WordPress</generator>
	<entry>
		<author>
			<name>le_phasme</name>
					</author>
		<title type="html"><![CDATA[[VB.NET] Utilisation du With &#8230; End With]]></title>
		<link rel="alternate" type="text/html" href="https://blog.developpez.com/le_phasme/p8565/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/vb_net_utilisation_du_with_end_with" />
		<id></id>
		<updated>2010-01-29T09:17:28Z</updated>
		<published>2010-01-27T17:12:28Z</published>
		<category scheme="https://blog.developpez.com/le_phasme" term="Optimisation &amp; Clarté de Code" />		<summary type="html"><![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;]]]></summary>
		<content type="html" xml:base="https://blog.developpez.com/le_phasme/p8565/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/vb_net_utilisation_du_with_end_with"><![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>
			<link rel="replies" type="text/html" href="https://blog.developpez.com/le_phasme/p8565/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/vb_net_utilisation_du_with_end_with#comments" thr:count="7"/>
		<link rel="replies" type="application/atom+xml" href="" thr:count="7"/>
		<thr:total>7</thr:total>
	</entry>
		<entry>
		<author>
			<name>le_phasme</name>
					</author>
		<title type="html"><![CDATA[[VB.NET] Implémenter la méthode Dispose dans une classe]]></title>
		<link rel="alternate" type="text/html" href="https://blog.developpez.com/le_phasme/p8542/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/implementer_la_methode_dispose_dans_une" />
		<id></id>
		<updated>2010-01-22T12:22:47Z</updated>
		<published>2010-01-21T10:04:37Z</published>
		<category scheme="https://blog.developpez.com/le_phasme" term="Optimisation &amp; Clarté de Code" />		<summary type="html"><![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;]]]></summary>
		<content type="html" xml:base="https://blog.developpez.com/le_phasme/p8542/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/implementer_la_methode_dispose_dans_une"><![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>
			<link rel="replies" type="text/html" href="https://blog.developpez.com/le_phasme/p8542/developpement/logiciel/winform/vb-net/optimisation-clarte-de-code/implementer_la_methode_dispose_dans_une#comments" thr:count="3"/>
		<link rel="replies" type="application/atom+xml" href="" thr:count="3"/>
		<thr:total>3</thr:total>
	</entry>
		<entry>
		<author>
			<name>le_phasme</name>
					</author>
		<title type="html"><![CDATA[[VB.NET] Allez à l&#8217;essentiel !]]></title>
		<link rel="alternate" type="text/html" href="https://blog.developpez.com/le_phasme/p8548/developpement/allez_a_l_essentiel" />
		<id></id>
		<updated>2010-01-22T12:21:12Z</updated>
		<published>2010-01-22T12:13:42Z</published>
		<category scheme="https://blog.developpez.com/le_phasme" term="Développement" /><category scheme="https://blog.developpez.com/le_phasme" term="Optimisation &amp; Clarté de Code" />		<summary type="html"><![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;]]]></summary>
		<content type="html" xml:base="https://blog.developpez.com/le_phasme/p8548/developpement/allez_a_l_essentiel"><![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>
			<link rel="replies" type="text/html" href="https://blog.developpez.com/le_phasme/p8548/developpement/allez_a_l_essentiel#comments" thr:count="1"/>
		<link rel="replies" type="application/atom+xml" href="" thr:count="1"/>
		<thr:total>1</thr:total>
	</entry>
	</feed>
