Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Aplicación de técnicas de refactoring #29

Open
AndresSalazar19 opened this issue Aug 11, 2024 · 0 comments
Open

Aplicación de técnicas de refactoring #29

AndresSalazar19 opened this issue Aug 11, 2024 · 0 comments

Comments

@AndresSalazar19
Copy link

Técnicas de refactoring aplicables a este proyecto:
Rename method
En la clase File.java
Diseño inicial:

image

El nombre actual del método puede no ser suficientemente claro para indicar qué tipo de transacción se refiere o qué implica exactamente el "tiempo de transacción". Renombrar este método a un nombre más descriptivo podría ayudar a mejorar la claridad del código.

Rediseño:
image

Este cambio hace explícito que el método establece el tiempo asociado con operaciones de archivo, como agregar, eliminar o recuperar archivos, lo cual puede ser más relevante en contextos donde la precisión en el manejo y la trazabilidad del tiempo son críticos.

Encapsulate field
En la clase Resource en Cloudet.java
Diseño inicial:

image

Los campos de la clase Resource eran públicos, lo que significa que podían ser accedidos y modificados directamente desde fuera de la clase.
Rediseño:
image

Los campos de la clase Resource ahora son privados lo que impide el acceso directo desde fuera de la clase.
Se han añadido métodos get y set para cada campo, lo que permite el acceso controlado a estos campos.

Consolidate Conditional Expression
En la clase File.java
Diseño inicial:
image

Hay dos condicionales separados que lanzan diferentes excepciones dependiendo del valor de fileSize. Ambos condicionales verifican si fileSize está fuera de un rango válido y lanzan excepciones con mensajes diferentes.

Rediseño:

image

Se combinan las dos expresiones condicionales en una sola usando el operador lógico ||. Se simplifica el código al lanzar una única excepción IllegalArgumentException con un mensaje más general.

Introduce Parameter Object
En la clase Cloudet.java
Diseño inicial:

image

En el método setResourceParameter, se pasaban tres parámetros relacionados: resourceID, costPerCPU, y costPerBw. Estos parámetros se utilizan para configurar los atributos de un objeto.
Rediseño:

image

Se ha creado una nueva clase ResourceParameters que encapsula los tres parámetros mencionados (resourceID, costPerCPU, costPerBw).
El método setResourceParameter ahora toma un objeto de tipo ResourceParameters como argumento en lugar de tres parámetros separados.

Introduce Assertion
En la clase cloudet.java
Diseño inicial:

image

El método setCloudletLength simplemente asigna el valor del parámetro cloudletLength al campo correspondiente de la clase sin ninguna validación.
Rediseño:

image

Se introduce una aserción para verificar que cloudletLength sea mayor que 0 antes de asignarlo al campo de la clase.
Si la condición no se cumple, el programa lanzará un error de aserción con un mensaje que explica la falla.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant