Switch Statement - Grupo Clay
Switch Statement - Grupo Clay
Switch Statement - Grupo Clay
SWITCH STATEMENTS
Grupo CLAY
Integrantes:
Choque Cabrera Sandra
Coria Rojas Joseph David
Rojas Patiño Josué Pedro
20 de septiembre de 2021
Descripción
Switch statement es normalmente una declaración condicional muy buena, pero en algunos
casos, especialmente con POO, da origen a malos olores en el código. Este problema rompe
algunas leyes del diseño del código.
El uso relativamente raro de operadores switch statement es uno de los sellos distintivos del
código orientado a objetos. El problema de las sentencias switch statement es
esencialmente el de la duplicación de código. A menudo, el código de un solo switch
statement se puede dispersar en diferentes lugares del programa. Cuando se agrega una
nueva condición, debe buscar todo el switch statement y modificarlo.
Como regla general, cuando veas switch statement, debes pensar en el polimorfismo.
Estrategias de solución
Para aislarlo switch y ponerlo en la clase correcta, es posible que necesite Extraer
método y luego Mover método.
Después de especificar la estructura de herencia, use Reemplazar condicional con
polimorfismo.
Cuando un switch realiza acciones simples, no hay razón para realizar cambios en el
código.
A menudo el switch los patrones de diseño de fábrica utilizan operadores de
interruptores (método de fábrica o fábrica abstracta) para seleccionar una clase
creada.
.
Ejemplos
Tenemos una clase cliente que busca calcular el área y el perímetro de algunas figuras
geométricas con la sentencia switch statement, pero también se desea agregar otra
figura geométrica y no modificar necesariamente gran parte de código.
2. Código que contiene el bad smell
3. Aplicación de la estrategia de solución
Se sugiere hacer una explicación del proceso de refactorización
a. Utilice la refactorización del método Extract para extraer la declaración de
cambio.
b. Si es necesario, use la refactorización del método Move para mover el
método a la clase donde se necesita el polimorfismo,
c. Luego, puede reemplazar el código de tipo con subclases o reemplazar el
código de tipo con el patrón de estado / estrategia ,
d. Finalmente, cuando la estructura de herencia esté en su lugar, use
la refactorización Reemplazar condicional con polimorfismo .
Proceso de Refactorización
Primero utilizaremos la refactorización del método Extract para extraer la instrucción
switch, que en este caso seria extraer los métodos para obtener el área y perímetro
Si es necesario, utilice la refactorización del método Move para mover el método a la clase
donde se necesita el polimorfismo,
A continuación, puede reemplazar el código de tipo con subclases o reemplazar el código
de tipo con el patrón de estado / estrategia, dividiendo nuestras figuras en sub clases hijas
de una interfaz común que sería Figura.
Código refactorizado
Dicha refactorización simplifica el código Cliente También permite una fácil extensibilidad
mediante implementaciones de otras formas sin cambiar una sola línea de código Cliente, o
sea en caso de querer agregar una nueva figura geométrica simplemente se tendría que
añadir una nueva sub clase y no se debería tocar nada del código ya refactorizado.
EJEMPLOS DE OTRAS FORMAS DE REFACTORIZAR ESTE BAD SMELL
Replace Type Code with Subclass (Reemplazar código de tipo con subclases). - Se debe
aplicar cuando se tiene un tipo de código inmutable que afecta el comportamiento de una
clase. Se debe reemplazar el código con subclases.
Extract Method (Extraer Método).- Ocurre cuando existe un fragmento de código que se
puede agrupar. Se convierte el fragmento en un método el cual su nombre explica el
propósito del método.
Move Method (Mover Método). - Un método puede ser usado más por otra clase que en la
que se definió. Para arreglar esto se crea un nuevo método con un cuerpo similar en la clase
que más usa. Se convierte el método antiguo en una simple definición o eliminarla por
completo.