Qu'est ce qu'une instruction IF imbriqués ?
Pourquoi est-il important de simplifier les instructions IF imbriqués ?
Il y a quelques problèmes avec les instructions IF imbriqués comme une difficulté à lire, maintenir ou mettre à jour ces instructions.
Simplifier les IF imbriqués avec coalesce
La fonction coalesce retourne la première valeur non-nulle d'une liste d'arguments. L'utilisation de cette fonction permet une meilleure lisibilité et une meilleure maintenance.
Voici un exemple de IF imbriqués :
if(
value("Téléphone portable") != null,
value("Téléphone portable"),
if(
value("Téléphone portable professionnel") != null,
value("Téléphone portable professionnel"),
value("Téléphone personnel")
)
)
Le code ci-dessus peut être remplacé par le suivant :
coalesce(value("Téléphone portable"), value("Téléphone portable professionnel"), value("Téléphone personnel"))
Un autre exemple de code :
if(
value("Date de départ") != null,
value("Date de départ"),
date("1970/01/01")
)
qui peut être remplacé par :
coalesce(value("Date de départ"), date("1970/01/01"))
Fonctions Predicate
Les fonctions predicate sont utilisées pour évaluer les conditions et retournent des valeurs booléennes. Elles sont utiles au sein d'expressions conditionnelles ou d’instructions IF. En résultat, peu de lignes de code et une lisibilité améliorée.
Voici un exemple de IF imbriqués :
if(
value("Client fidèle"),
"Expédition gratuite",
if(
value("Total commande") >=50,
"Expédition gratuite",
"Expédition payante"
)
)
if(
value("Client fidèle") or value("Total commande") >=50,
"Expédition gratuite",
"Expédition payante"
)
IF imbriqués versus instruction Case
Ci-dessous un exemple de IF imbriqués :
if(value("Age") < 1, "Nourrisson",
if(value("Age") < 5, "Enfant en bas âge",
if(value("Age") < 13, "Enfant",
if(value("Age") < 20, "Adolescent",
if(value("Age") < 30, "Jeune adulte",
if(value("Age") < 65, "Adulte",
"Personne âgée"
)
)
)
)
)
)
Pouvant être remplacé par :
case(
value("Age") < 1, "Nourrisson",
value("Age") < 5, "Enfant en bas âge",
value("Age") < 13, "Enfant",
value("Age") < 20, "Adolescent",
value("Age") < 30, "Jeune adulte",
value("Age") < 65, "Adulte",
"Personne âgée"
)
Range lookup
Un range lookup est utilisé pour faire correspondre une valeur à une plage de valeurs et retourne le résultat correspondant. Les mises à jour sont effectuées par le biais d'une table lookup externe ou un fichier, éliminant le besoin d'édition du script.
Ci-dessous un exemple de IF imbriqués :
if(value("Age") < 1, "Infant",
if(value("Age") < 5, "Toddler",
if(value("Age") < 13, "Child",
if(value("Age") < 20, "Teen",
if(value("Age") < 30, "Young Adult",
if(value("Age") < 65, "Adult",
"Older Adult"
)
)
)
)
)
)
Voici un script .build (Spectre) utilisant un lookup et ouvert dans Workbench :

Voici le contenu du premier objet text (flux principal) :

Et voici le contenu du deuxième objet text :

Voici une partie des propriétés de l’objet lookup :

ainsi que le résultat du test du lookup :

Un range lookup peut donc remplacer aisément des IF imbriqués.