IMO switch
declaraciones no son malo, pero se deben evitar si es posible. Una solución sería usar un Map
donde las claves son los comandos, y los valores Command
se oponen con un método execute()
. O List
si sus comandos son numéricos y no tienen espacios vacíos.
Sin embargo, por lo general, utilizaría las declaraciones switch
al implementar patrones de diseño; un ejemplo sería usar un patrón Chain of responsibility para manejar los comandos dados cualquier comando "id" o "valor". (También se mencionó el patrón Strategy). Sin embargo, en su caso, también puede consultar el patrón Command.
Básicamente, en OOP, tratará de utilizar otras soluciones que confiar en los bloques switch
, que utilizan un paradigma de programación de procedimientos. Sin embargo, cuándo y cómo usar cualquiera de ellos es algo su decisión. Yo personalmente utilizo a menudo switch
bloques cuando se utiliza el patrón de Factory etc.
Una definición de la organización del código es:
- un paquete es un grupo de clases con API coherant (ex:
Collection
API en muchos marcos)
- una clase es un conjunto de funcionalidades coherentes (por ejemplo, una clase
Math
...
- un método es a funcionalidad; debería hacer una cosa y una sola cosa. (por ejemplo: agregar un elemento en una lista puede requerir agrandar esa lista, en cuyo caso el método
add
se basará en otros métodos para hacerlo y no realizará esa operación, porque no es su contrato).
Por lo tanto, si su instrucción switch
realiza diferentes tipos de operaciones, usted es "violando" esa definición; mientras que usar un patrón de diseño no lo hace, ya que cada operación se define en su propia clase (su propio conjunto de funcionalidades).
Ver [Instrucciones de Switch grande: ¿mal OOP? ] (http://stackoverflow.com/questions/505454/large-switch-statements-bad-oop) –
Siempre encuentra esto interesante ya que aparentemente el cambio de código está agregando otro caso en la declaración de cambio, pero no es necesario agregar otra clase. ..algunas veces el purista de OO puede ser un poco "religioso" ... –
'"Considerado dañino" considerado dañino ". – delnan