Attention à iif

Contenu du snippet

Ce code n'en est as vraiment un,
il s'agit plus d'une mise en garde...

IIF est pratique, "sexy" et tout ce que vous voudrez... Il permet de condenser, voire clarifier le code.

mais faites attention quand vous l'utilisez :

quel que soit le résultat de la condition, les deux parties succeptibles d'etre renvoyées sont évaluées
rien de bien grave si vous utilisez des valeurs en dur, ou au pire, des variables; mais cela peut devenir franchement génant si vous utilisez des Function ou des propriétés en guise de valeurs de retour.

En effet, coté Perfs, on peux très bien se passer de l'execution de cycles inutiles, juste pour économiser un Else et un End If ....

Pour vous convaincre, ce simple code suffit....

Source / Exemple :


Private Sub Form_Load()
Dim a As Long
    a = IIf(True, RightCase, WrongCase)
End Sub

Public Property Get RightCase() As Long
    '# L'execution évalue la partie 'True', riend d'anormal...
    Stop
End Property

Public Property Get WrongCase() As Long
    '# L'execution ne devrais pas passer ici....
    Stop
End Property

Conclusion :


Favorisez donc ici :

If True Then
a = RightCase
Else
a = WrongCase
End If

A Noter que ce comportement d'évaluation est également présent dans les If :

If True Or WrongCase Then

Favorisez ici

If True Then
If WrongCase Then
...

Bien sur, on ne fait pas If True Then .... True est là pris à titre d'exemple.
Cette mise en garde ne s'applique de plus pas aux constantes, variables, et autres évaluations rapides...

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.