Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Switch Statement - Grupo Clay

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 9

BAD SMELL

SWITCH STATEMENTS

Grupo CLAY
Integrantes:
Choque Cabrera Sandra
Coria Rojas Joseph David
Rojas Patiño Josué Pedro

Docente: Ing. Rosemary Torrico Bascope

Carrera: Ingeniería en Informática

Universidad Mayor de San Simón

Facultad de Ciencias y Tecnología

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.

 Si a switch se basa en un código de tipo, como cuando se cambia el modo de


ejecución del programa, use subclases reemplazar el código de tipo con el patrón
de estado / estrategia.

 Si una de las opciones condicionales es null, use Introducir objeto nulo.

Podemos ignorar en algunos casos como por ejemplo

 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

1. Breve descripción del escenario de su ejemplo

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.

Finalmente, cuando la estructura de herencia esté en su lugar, use Reemplazar condicional


con refactorización de polimorfismo. Esta técnica se adhiere al principio de Decir-No-
Preguntar: en lugar de preguntar a un objeto sobre su estado y luego realizar acciones
basadas en esto, es mucho más fácil simplemente decirle al objeto lo que necesita hacer y
dejar que decida por sí mismo cómo hacerlo.

De esta forma ya tendríamos el código refactorizado

 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.

También podría gustarte