Sei sulla pagina 1di 5

TEMA 4.

4.1. REFACTORIZACIÓN

//Definición: Consiste en modificar, transformar del código o parte del código fuente para
conseguir optimizarlo (Menos líneas, menos variables, menos métodos, … más rápido /menos
consumo de memoria dd/ram)

Condiciones/requisitos  Funcionamiento del programa no varía(entrada Resultados),tiene


que ser más “entendible” ,código más organizado, Fácilmente modificable en el futuro)

TIPOS DE REFACTORIZACION:
La que incorpora el IDE
Mediante patrones manuales
Refactorizar  Necesita Análisis/diseño/planificación del código.

Métodos/Herramientas de refactorización:
- Tabulación(Sangrado, justificación)  Objetivo = Visualizar mejor la jerarquía de
elementos de un código.
- Extraer métodos  Objetivos = Evitar repetir código.
Ejemplos LeerCadena,LeerEntero
Void imprimirTodo(){
imprimirBanner();
System.out.println(nombre)
System.out.println(cantidad+getcargo());
}
- Separar variables temporales
o Objetivo Evitar complejidad en expresiones/parámetros.
 Ejemplos : valor= a*c+4*d/z*e

- Eliminar Asignaciones a parámetros:


Objetivo  Evitar Destruir parámetros.

 CONSOLIDAR FRAGMENTOS DUPLICADOS EN CONDICIONALES.


Evitar código repetido en condicionales
Acciones
Ejemplo: if ( condición) {
Total=””;
Enviar();

}else{
Total= “”;
Enviar();
}
Solución:
If(condición){
Total = “”;
}
Else
{
Total=””;

}
Enviar();

 DESCOMPONER UN CONDICIONAL:
Especificar más “sencillamente” la condición

NO ES ASÍ:
If (Cond1 || cond2 || cond3 && cond4){

}
If(fecha.antes(empieza_verano)||fecha.despues(Fin_verano));
If(noesVerano(fecha)){}

 CONSOLIDAR EXPRESIONES CONDICIONALES

simplificar condiciones

ejemplo
double cuantiadiscapacidad(){
if(antigüedad <2) return 0;
if(antigüedad>12)return 0;
}

REMPLAZAR NUMERO MAGICO CON COJNSASTE SIMBOLICA


Generalizar/estandarizar constantes

Sustituir valores/expresiones literales por variables constantes.

Ejemplo: double energiaPotencial(double masa,double altura);


Return masa*altura*9.81respo código
Refactorizar
Double return masa*alura*constatne_gravitational static final constante =
9.81

REMPLAZAR NUMERO MAGICO CON METODOS CONSTANTES.


Sustituir expresiones/cálculos con métodos.

Ejemplo: double energiaPotencial(parámetros)


Return masa*altura*9.81;
Refactorizar :
Double energía potencial(consante)
Return masa*altura*constanteGravitacional();

Malos hábitos:
-Evitar métodos “largos” Descomposición en métodos más simples.

-Evitar clases de objetos “Grandes”  Descomposición de clases . ( clases mas


simples)

-Evitar lista de parámetros larga utilizando variables globales/constantes


 Definir variables locales al método

-Obsesión primitiva  Evitar objetos a costa de utilizar muchas variables de


tipos simples
-Clase de objetos incompleta  Definir objetos con insuficientes atributos y/o
métodos.
-Comentarios exceso uso de especificaciones comentadas.
-Estructuras de agrupación condicional  Evitar el uso de anidación
condicional.(if con switch).
-Atributos temporales  atributos “muy poco” utilizados en una clase.
variables externas.
-Intermediarios  Variables Temporales usadas en pocas expresiones.
-Intimidad inadecuada variable con “ámbito” no específico.
-Cadena de mensaje  Definición objetos adecuada Atributos
Métodos
-Clase perezosa  poco utilizada.
-Cambios en cadena Varias variables para una misma expresión , intentar
simplificar
-Envidia de características métodos hacen más de lo que deberían hacer +
variables multiuso.
-Duplicación de código  Para evitarlo, + métodos.
-Grupos de datos Obsesión por clases de objetos , tablas ,ficheros.

1. Pregunta Que es un mal olor ,malas practicas .


Forma coloquial de llamar a las malas prácticas en programación
2. Como podemos tener un código más claro y entendible 

Refactorizando

El uso de comentarios es siempre una práctica recomendable 

Los comentarios son una herramienta fundamental en la refactorización, pero


no exigible.
TEMA 5. Diseño orientado a objeto. Diagramas de clase.

5.1 introducción a UML.

UML (Unified Modeling Language), Lenguaje de modelado unificado. -

Métrica… CommonKads

Última versión UML = 2.0;

( no hace falta saberse la diferencia entre los tipos de diagramas.

Tipos de diagramas UML  Estructura(que)Diagrama de {clases


objetos,Componentes,Despliegue,paquetes}.

Comportamiento(como)Diagrama de casos de
uso, Diagrama de interacion{Secuencia,Comunicación,tiempos},Diagrama de
estados,Diagrama de actividad.

5.2 Diseño de clases con UML.

Tipos Relaciones Entre Clases 

 Asociación  Relación básica de interacion

 Composición  Forma parte de , pero la


existencia de una de ellas no dependen de la otra.

 Agregación forma parte de (jerarquías) ,


lo contrario que composición .

 Herencia 

Preguntas tema 5 :

¿Qué es UML ? Lenguaje de modelado unificado.

¿para que se utilizan los diagramas de clase? Relaciones entre los datos del
problema (propiedades y métodos).

¿Cómo podemos entender los diagramas UML utilizados por diferentes


diseñadores? Es un estándar

¿Qué elementos del diagrama de clases representan el ciclo de vida de un


programa? No son suficientes los elementos del diagrama de clases para
marcar el ciclo de vida de un programa.

¿Cómo se aplica ingeniería inversa en diagramas de clases? A partir del código


fuente obtener los diagramas.

¿tipos básicos de relaciones entre clases?

Asociación simple ,composición y herencia.


¿puede representarse la herencia múltiple en los diagramas de clase?

Si

Potrebbero piacerti anche