Académique Documents
Professionnel Documents
Culture Documents
Mdulo 2 FACTORING
Mdulo 3
Refactoring
Qu es? Es hacer cambios a un cdigo fuente para mejorar su estructura interna sin modificar su estructura externa(sic)
-Martin Fowler
Mejorar el diseo una vez que ha sido escrito Es un proceso disciplinado, e incluso cajonero,pero que requiere mucha atencin al detalle y una comprensin profunda del cdigo. La gestin de configuracin es crtica.
Refactoring Porqu?
Los sistemas casi siempre con el tiempo, se vuelven ms confusos
La arquitectura se pieeeeerdeeee.
Copyright Cenfotec S.A. 2005
Refactorizacin
Es requisito imprescindible para realizar refactoring, tener Pruebas preparadas para realizar sobre los elementos que se van a refactorizar
Ejemplos de Refactoring
Extraiga un mtodo
Convierta un fragmento de cdigo en un mtodo que explique el propsito del mismo. Si tiene un conjunto de operaciones repetidas en varios mtodos, convirtalas en un nuevo mtodo privado dentro del objeto.
public void imprimeY() { ClaseY y = obtieneY(); System.out.println ("Nombre: " + y.toString); System.out.println (Cantidad: " + y.getMiembros); }
Refactoring (Ejemplos)
Remplace el mtodo con un Objeto Si tiene un mtodo extenso que usa varias variables locales,convirtalo en un objeto y descomponga el mtodo dentro del objeto Crea una nueva clase con el nombre del mtodo. La clase tendr como atributos los parmetros del mtodo (recuerde ocultamiento de informacin). Estos campos deben inicializarse en el constructor. Crea un mtodo pblico llamado CalcularXXX RealizarXXX. Sustituya el mtodo en el cdigo por la creacin del objeto + el llamado al mtodo.
Refactoring (Ejemplos)
Remplace los if anidados con clausulas individuales.
If (condicin) then return X else If (condicin2) then return Y else If (condicion3) then return Z end If If (condicin) Then return X End If If (condicin2)Then return Y End If If (condicion3)Then return Z End If
Refatoring (Ejemplos)
Si tiene un condicional que escoge distintas conductas dependiendo del tipo de objeto, haga que cada opcin corresponda a una subclase que implemente cada conducta usando mtodos abstractos. (Normalmente lo primero tiene que ver con un mal diseo).
Refactoring (Ejemplos)
Esconda un mtodo Si un mtodo pblico no es usado por ninguna otra clase, hgalo privado o protegido. Cambie las excepciones por chequeos: Si tiene una excepcin que pudo testear antes con un if, hgalo.