Programar contra um enum em uma instrução switch, é esse o seu caminh

Veja o trecho de código:

Isto é o que normalmente faço quando codifico contra um enum. Eu tenho uma fuga padrão com uma InvalidOperationException (não uso ArgumentException ou uma de suas derivadas porque a codificação é contra um campo de instância privada e não um parâmetro de entrada

Eu queria saber se vocês colegas desenvolvedores também estão codificando com essa fuga em mente ....

public enum DrivingState {Neutral, Drive, Parking, Reverse};

public class MyHelper
{
    private DrivingState drivingState = DrivingState.Neutral;

    public void Run()
    {
        switch (this.drivingState)
        {
            case DrivingState.Neutral:
                DoNeutral();
                break;
            case DrivingState.Drive:
                DoDrive();
                break;
            case DrivingState.Parking:
                DoPark();
                break;
            case DrivingState.Reverse:
                DoReverse();
                break;
            default:
                throw new InvalidOperationException(
                    string.Format(CultureInfo.CurrentCulture, 
                    "Drivestate {0} is an unknown state", this.drivingState));
        }
    }
}

Nas revisões de código, encontro muitas implementações com apenas uma declaração de quebra no escape padrão. Pode ser um problema ao longo do tempo ....

questionAnswers(12)

yourAnswerToTheQuestion