Parece que vejo isso com frequência suficiente no meu código e em outros. Não há nada que pareça terrivelmente errado, mas isso me incomoda, pois parece que pode ser feito melhor. Suponho que uma declaração de caso possa fazer um pouco mais de sentido, mas muitas vezes variável é um tipo que não funciona bem ou de modo algum com declarações de caso (dependendo do idioma)
If variable == A
if (Flag == true)
doFooA()
else
doFooA2
else if variable == B
if (Flag == true)
doFooB()
else
doFooB2
else if variable == C
if (Flag == true)
doFooC()
else
doFooC2
Parece que há várias maneiras de "fatorar" isso, como 2 conjuntos de if-elses, nos quais um conjunto lida quando Flag == true.
Existe uma "boa maneira" de fatorar isso, ou talvez quando esse algoritmo if-else acontece, geralmente significa que você está fazendo algo errado?
if (Flag == true)vez de apenas If (Flag)? Se você acha que If (Flag == true)é melhor, por que não if ((Flag == true) == true)?