je cherche a simplifier ce code :
y a t-il plus simple par exemple en utilisant l'opérateur conditionnel ?;Code:
1
2
3
4
5
6
7
8
9 { if (Sequence) { if (DoYouSave()) Open(); } else Open(); }
Merci
Version imprimable
je cherche a simplifier ce code :
y a t-il plus simple par exemple en utilisant l'opérateur conditionnel ?;Code:
1
2
3
4
5
6
7
8
9 { if (Sequence) { if (DoYouSave()) Open(); } else Open(); }
Merci
Avec l'opérateur ternaire, je ne vois pas trop ; il est surtout utile quand on a besoin que le test soit une expression et non une instruction.
On peut envisager par contre de regrouper les tests avec des opérateurs logiques. Est-ce plus simple ? C'est selon les goûts...
Ou bien :Code:
1
2
3
4
5 if (Sequence && !DoYouSave()) { return; // A condition que le return ait du sens ici... } Open();
Code:
1
2
3
4 if (!Sequence || (Sequence && DoYouSave())) { Open(); }
Ou encore plus simplement à sémantique strictement équivalente s'il n'y a pas d'éffet de bord dans l'évaluation de l'expression "sequence" (auquel cas la solution ci dessus n'est pas strictement équivalente au code initial) :
Remarque que si le code est notablement plus simple il n'est pas forcément plus clair pour des lecteurs peu habitués à tordre des formules logiques.Code:
1
2
3
4 if (!Sequence || DoYouSave()) { Open(); }
JE doit effectivement regarder que Sequence n'est pas NULL avant d'appler la fonction DoYouSave()
n'est-ce pas alors une precondition que DoYouSave devrait gérer ?