I'm comparing the boolB
here twice, and this code looks like it needs improvement. Is it possible to write this different to reduce code repetition?
if (boolA)
{
if (boolB)
{
return "A";
}
return "B";
}
if (boolB)
{
return "C";
}
return "D";
Well, you could a conditional operator to make it clearer - at least to my eyes:
return boolA && boolB ? "A"
: boolA ? "B"
: boolB ? "C"
: "D";
Once you get used to this way of writing multiple conditional operators, it reads very clearly as a sort of pseudo-pattern-matching approach.
This does evaluate conditions multiple times, admittedly. There are ways of avoiding that, but I'm not sure they're nice... for example:
int bits = (boolA ? 2 : 0) | (boolB ? 1 : 0);
switch(bits)
{
case 3: return "A";
case 2: return "B";
case 1: return "C";
case 0: return "D";
default: throw new InvalidOperationException("The world has gone mad!");
}
Or use a different approach to the nesting of the conditionals:
return boolA ? (boolB ? "A" : "B")
: boolB ? "C"
: "D";
This still expresses boolB
as a condition twice, mind you.
See more on this question at Stackoverflow