Conditions ternaires en VB.NET

Lucidiot Informatique 2012-02-03
Description de IIf() et If() pour améliorer son spaghetti-code.


Bonjour à tous chers développeurs VB.NET ! Votre programme utilise des conditions par centaines, et, jaloux des développeurs C# ou de tous les autres langages disposant d'opérateurs ternaires, des If en une seule ligne ? La fonction IIf() est faite pour vous !

EDIT 22/06/2015 Microsoft a introduit avec Visual Studio 2008 une autre fonction, If, dont le fonctionnement est plus rapide. Plus de détails en fin d'article.

Syntaxe

IIf(expression As Boolean,TruePart As Object,FalsePart As Object)

Exemple

MsgBox(IIf(BoolCondition = True, "La condition vaut True", "La condition vaut False"))

L'équivalent de cette ligne avec des If ordinaires serait :

If BoolCondition = True Then
    MsgBox("La condition vaut True")
Else
    MsgBox("La condition vaut False")
End If

Les deux codes précédents sont les mêmes, mais l'un est bien plus rapide à écrire que l'autre. Attention toutefois à un effet possiblement néfaste sur la lisibilité du code. Bonne journée et bonne programmation !

Ajout du 22 juin 2015

Microsoft a introduit, avec Visual Studio 2008, une fonction qui m'était encore méconnue : If(). La différence entre IIf et If réside dans la vitesse d'exécution : IIf() évalue (calcule) d'abord tous les arguments, y compris celui qui ne sera pas retourné. If() évalue d'abord la condition, et n'évaluera que l'argument utilisé.

Il y a une seconde différence entre IIf et If qui rend la fonction plus intéressante : sa syntaxe.

If(argument1, argument2, argument3)
If(argument2, argument3)

Vous ne comprenez pas l'intérêt de la chose ? On a une manière plus rapide à coder et à lire pour vérifier si une variable ne vaut rien (et éviter les ArgumentNullException par exemple). Voici donc toutes les manières possibles de vérifier si une variable var a une valeur.

If var = Nothing Then
    MsgBox("Vide !")
Else
    MsgBox(var)
End If
MsgBox(IIf(var = Nothing, "Vide !", var)) 'Plus court
MsgBox(If(var = Nothing, "Vide !", var)) 'Plus rapide
MsgBox(If(var, "Vide !")) 'Parfait

Commentaires

Il n'y a pour l'instant aucun commentaire. Soyez le premier !