Top 5 articles:
code-smells's Introduction
code-smells's People
code-smells's Issues
Middle Man
Buenas le mando un cordial saludo somos estudiantes de la carrera de computacion de la ESPOL y andamos buscando repositorios que contengan diferentes tipos de code smell y con sus tecnicas de refactorizacion. Este issue es solo para dejar constancia del trabajo.
La clase console solo se encarga de delegar la accion de imprimir a la clase system, cuando esta podria ser llamada directamente. Esta clase no es mas que una cascara vacias que no tiene sentido tenerla, ya que el entender y mantenerla cuesta tiempo y dinero.
Beneficio de refactorizar:
• Menos complejidad del sistema al quitar una clase que no realiza nada.
• Menos acoplamiento entre clases, ya que en caso de no eliminarla cada clase que desee imprimir algo debera tener una referencia de console para poder imprimir algo.
Tecnica Remove Middle Man:
Esta clase solamente se encarga de delegar a la clase system de que imprima algo. Por ello la mejor opcion para no tener esa clase que llegar a generar alto acoplamiento entre clases, seria eliminar esos metodos y forzar al cliente a llamar los metodos directamente.
Con ello se puede observar que ya no sera necesario tener una referencia de la clase console de por gusto y en caso de que se deseen mas clases que deseen imprimir algo no tendran la necesidad de tener esa referencia a la clase console, dejando asi el acomplamiento entre clases al minimo.
Buenas tardes y disculpe las inconveniencias causadas.
Code Smell Switch Statement
Clase : Tenant
Code Smell: Switch Statement
• Problema presente
4. Elimina dependencia en los casos. Si se agrega otro tipo de Tenant se debería agregar mas casos al switch statement.
5. Implementacion expuesta al cliente.
• Beneficios de Refactorizar
10. Cumple el principio Solid Open/Closed Principle.
11. Mejora la adherencia al Single Responsability Principle y hace el programa mas legible.
12. Esto puede ayudar a enmascarar el propósito/implementación de métodos
Sección B
Clase Tenant
Sección C
Técnica de Refactorización: Replace Type Code with Strategy
Como vemos un code smell en el switch entonces vemos que se repiten los tipos de TenantType para realizar una misma actividad categorizada por su tipo por lo que mejor creamos cada tipo de Tenant para agragar modularizacion al código y en el método que tiene el code smell encapsulara su implementación al cliente.
Clase Abstracta TenantType
Clases que heredan de TenantType e implementan el método calculateDepositAfterRenting(int deposit)
Code Smell Duplicate Code
Clase: DistanceCalculator
Code Smell: Duplicate Code
• Problema presente
- Puede afectar a la comprensión de la sección del código.
- Puede afectar al tamaño del archivo.
- La repeticiones de las secciones de código pueden ocultar la manera de como difiere una de otra.
• Beneficios de Refactorizar - Simplifica la estructura de código.
- El código se hace mucho mas corto.
- Simplificación y poca longitud hace el código mucho mas legible y escalable.
Sección B
Como podemos ver en el método betweenPoints se duplica el código que se ha implementado en el método toOriginFrom
Sección C
Como se puede ver en esos dos métodos se repite el código usado, por lo que si reemplazamos un código por otro algoritmo nos ayuda a reducir extensiones de código y eliminar el código duplicado para darle comprensibilidad a la diferenciación de cada algoritmo.
Puedes usar la técnica de refactorizacion "Introduce Parameter Object "en la clase "DistanceCalculator"
En la sección b ya encontramos un código smells en la clase DistanceCalculator en el método betweenPoints ya que este recibe muchos parámetros esto resultaría engorroso para las personas que deseen utilizar dicho método.
Antes
Beneficios de Refactorizar
Creando la clase punto y reemplazaremos los parámetros por un objeto y eliminamos los parámetros antiguos.
Despues
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.