Switch Statements widersprechen dem von Clean Code.
public class Bird
{
public BirdType Type { get; private set; }
..
public double getSpeed()
{
switch (type)
{
case EUROPEAN:
return getBaseSpeed();
case AFRICAN:
return getBaseSpeed() - getLoadFactor() * numberOfCoconuts;
case NORWEGIAN_BLUE:
return (isNailed) ? 0 : getBaseSpeed(voltage);
}
throw new BirdTypeException();
}
}
In diesem Beispiel kann kein Vogel hinzugefügt werden, ohne den bestehenden Code zu verändern.
public abstract class Bird
{
public abstract double getSpeed();
}
public class European : Bird
{
public override double getSpeed()
{
return getBaseSpeed();
}
}
..