Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 

Repository files navigation

Bad Smell Examples - G6

Repositorio de Code Smells en Java Este repositorio contiene ejemplos prácticos de Malos Olores de Programación (Code Smells).

Integrantes

Guzmán Carrera Steven Paúl

Mendoza Rendón Joan Sebastián

Palacios Pérez Kristel Valeria

Rincón Hernández Daniel Efraín

Nota

Todos los archivos "FILE" son de lectura en IDEs como Visual Studio, etc.

Descripción

Un code smell es un síntoma en el código fuente que indica un posible problema de diseño o una oportunidad de refactorización.

Estructura del Proyecto El código está dividido en las cinco categorías principales:

Bloaters (Hinchazón) Código que ha crecido tanto que es difícil de procesar. Long Method: Métodos con demasiadas líneas. Solución: Extract Method.

Large Class: Clases con demasiadas responsabilidades. Solución: Extract Class.

Primitive Obsession: Uso de tipos primitivos para conceptos de dominio (ej. usar String para un teléfono). Solución: Replace Data Value with Object.

Long Parameter List: Más de 3 o 4 parámetros. Solución: Introduce Parameter Object.

Data Clumps: Grupos de variables que siempre van juntas. Solución: Extract Class.

Object-Orientation Abusers Uso incorrecto de los principios de la Programación Orientada a Objetos. Switch Statements: Lógica compleja basada en tipos. Solución: Replace Conditional with Polymorphism.

Temporary Field: Campos que solo tienen valor en ciertas circunstancias. Solución: Extract Class.

Refused Bequest: Una subclase que no usa lo que hereda. Solución: Push Down Method o Replace Inheritance with Delegation.

Alternative Classes with Different Interfaces: Dos clases hacen lo mismo con nombres distintos. Solución: Rename Method o Unified Interface.

Change Preventers (Preventores de Cambio) Código que hace que cada modificación sea un dolor de cabeza. Divergent Change: Tienes que cambiar la misma clase por muchas razones distintas. Solución: Extract Class.

Shotgun Surgery: Un solo cambio requiere tocar muchas clases pequeñas. Solución: Move Method/Field.

Parallel Inheritance Hierarchies: Al crear una subclase en A, debes crear otra en B obligatoriamente. Solución: Move Method.

Dispensables (Prescindibles) Elementos innecesarios que deberían eliminarse. Comments: Comentarios que intentan explicar un código mal escrito. Solución: Extract Method / Rename Variable.

Duplicate Code: Fragmentos idénticos. Solución: Extract Method.

Lazy Class: Clases que no hacen lo suficiente para justificar su existencia. Solución: Inline Class.

Data Class: Clases que son solo contenedores de datos (getters/setters). Solución: Encapsulate Field / Move Method.

Dead Code: Código que no se usa. Solución: Eliminar sin piedad.

Speculative Generality: Código "por si acaso" o ganchos para el futuro que nunca se usan. Solución: Collapse Hierarchy.

Couplers (Acopladores) Vinculación excesiva entre clases. Feature Envy: Un método usa más datos de otra clase que de la suya. Solución: Move Method.

Inappropriate Intimacy: Clases que conocen demasiados detalles internos de otras. Solución: Move Method/Field.

Message Chains: El código parece un choque de trenes (a.getB().getC().getD()). Solución: Hide Delegate.

Middle Man: Una clase cuya única función es delegar. Solución: Remove Middle Man.

Notas de Precisión En los cálculos de impuestos (ej. IVA), se ha mantenido la precisión de 15.00% como estándar de prueba.

Los valores numéricos siguen la regla de cifras significativas solicitada en el contexto del usuario.

About

Repositorio de Code Smells en Java Este repositorio contiene ejemplos prácticos de Malos Olores de Programación (Code Smells).

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors