22
janvier
2010
[VB.NET] Allez à l’essentiel !
janvier
2010
Exemples d’optimisations divers VB.NET
Exemple 1 :
Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String
Dim rqSessionName = (From Agent In dtct.Agent _
Where Agent.AgentID = iAgentID _
Select Agent.AgentSession).Single
Return rqSessionName
End Function
Dim rqSessionName = (From Agent In dtct.Agent _
Where Agent.AgentID = iAgentID _
Select Agent.AgentSession).Single
Return rqSessionName
End Function
La variable semble vraiment inutile
Function getAgentSessionNameByID(ByVal iAgentID As Integer) As String
return (From Agent In dtct.Agent _
Where Agent.AgentID = iAgentID _
Select Agent.AgentSession).Single
End Function
return (From Agent In dtct.Agent _
Where Agent.AgentID = iAgentID _
Select Agent.AgentSession).Single
End Function
Exemple 2 :
Etat :
Dim Test(5) As String
Dim Result as String
Test(0) = "A"
Test(1) = "B"
Test(2) = "C"
Test(3) = "D"
Test(4) = "E"
Dim Result as String
Test(0) = "A"
Test(1) = "B"
Test(2) = "C"
Test(3) = "D"
Test(4) = "E"
Nous cherchons à concaténer les chaines, on voit régulièrement :
Result=Test(0)& "-"&Test(1)& "-"&Test(2)& "-"&Test(3)& "-"&Test(4)
ou encore
Result=""
For i=0 to 4
Result=Result & "-" & Test(i)
Next
For i=0 to 4
Result=Result & "-" & Test(i)
Next
Mais on doit normalement employer tout simplement :
Result = String.Join("-", Test)
Exemple 3 :
Très fréquemment, on voit également :
Si MaCondition est vrai alors
MonObjet=vrai
sinon
MonObjet=Faux
Fin Si
MonObjet=vrai
sinon
MonObjet=Faux
Fin Si
If oLstAssocRqInt.IndexOf(Assoc) = iIndexDefaultMail Then
FicheInterv.SelectedEmail1 = True
End If
FicheInterv.SelectedEmail1 = True
End If
devrait en fait devenir :
FicheInterv.SelectedEmail1=(oLstAssocRqInt.IndexOf(Assoc) = iIndexDefaultMail)
J’espère que ces quelques exemples vous seront utiles.
Salut,
ok pour les deux premières notations, par contre, attention à la troisième.
D’abord, cette notation « semble » être la même que l’originale, mais ce n’est pas le cas. En effet, dans le cas ou oLstAssocRqInt.IndexOf(Assoc) est différent de iIndexDefaultMail, dans le second cas, on change la valeur de FicheInterv.SelectedEmail1.
Ensuite, si, pour une expression courte et claire, elle ne pose pas de problème, pour une expression un peu longue, on va perdre en clarté. Dans le cas présenté, la première version à beau tenir sur plus de ligne, elle est plus lisible (amha) que la seconde.
Enfin, en dehors de la seconde, on est plus dans la réécriture pour des questions de lisibilité que dans l’optimisation
Mais très bonne initiative de mettre en avant ce genre de notation, trop peu de personnes sont même au courant de leur existence