J'ai un morceau de code qui ressemble à ceci:Comment convertir une instruction If composée de plusieurs AND, OR dans une instruction switch?
String cStatus = getStatus_c();
String nStatus = getStatus_n();
if (!((cStatus.equals(PEN) && nStatus.equals(ACT))
|| (cStatus.equals(PEN) && nStatus.equals(SUS))
|| (cStatus.equals(PEN) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(ACT) && nStatus.equals(SUS))
|| (cStatus.equals(ACT) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(SUS) && nStatus.equals(ACT))
|| (cStatus.equals(SUS) && nStatus.equals(PEN_CAN))
|| (cStatus.equals(PEN_CAN) && nStatus.equals(ACT))
|| (cStatus.equals(PEN_CAN) && nStatus.equals(CAN))))
{
//Do someting//
}
code ci-dessus remplit mes besoins mais je veux changer à un code plus lisible en utilisant quelque chose comme bloc de commutation, etc. Je sais comment passer des travaux mais je ne suis pas sûr de savoir comment cacher mon code existant.
Juste pour une meilleure lisibilité, voici une version assainis (A
est PEN
, B
est ACT
, C
est SUS
et D
est PEN_CAN
):
if (! ( (cStat == A && nStat == B)
|| (cStat == A && nStat == C)
|| (cStat == A && nStat == D)
|| (cStat == B && nStat == C)
|| (cStat == B && nStat == D)
|| (cStat == C && nStat == B)
|| (cStat == C && nStat == D)
|| (cStat == D && nStat == B)
|| (cStat == D && nStat == D)
)
)
Vous ne avez pas vraiment besoin d'un commutateur pour le nettoyer, votre instruction if peut être nettoyé en réduisant la redondance dans l'état de vérification utilisant des parenthèses correctement placés. – zgc7009
Pouvez-vous expliquer logiquement ce que représente l'expression 'boolean'? Beaucoup plus facile à comprendre alors ... Vous pourriez créer des sous-expressions et les stocker dans des variables 'boolean', leur donner ** de bons noms de variables **. Votre expression 'if' utilisera alors ces variables et sera lisible. Vous pouvez également identifier des variables communes dans l'expression et créer des expressions "imbriquées" ** "if". – Zabuza