1. La "refactorización" cambia la forma en que se diseña el diseño orientado a objetos
1. Mejorar el diseño del software (organizar el código)
2. Mejorar la calidad y legibilidad del código, haciendo que los sistemas de software sean más fáciles de entender y mantener
3. Ayudar a encontrar errores lo antes posible
4. Mejorar la velocidad de programación
Mejorar el diseño, mejorar la legibilidad y reducir los errores se trata de permanecer en el suelo. Un buen diseño es la mitad de la batalla, detenerse a mejorar el diseño a través de la refactorización puede ralentizar la velocidad en la actualidad, pero las ventajas que trae no se pueden subestimar.
2. Escribir código 22 pecados capitales
- Código duplicado Código duplicado
- Método largo función demasiado larga
- Clase grande Clase demasiado grande
- Lista de parámetros larga Lista de parámetros demasiado larga
- Cambio divergente cambio divergente (enfoque relativo)
- Cirugía de escopeta Modificación de escopeta
- Gráfico adjunto de envidia de características
- Grupos de datos
- Obsesión primitiva paranoia de tipo básico
- Switch Statement (Surge el horror de Switch)
- Sistema de herencia equilibrado de jerarquías de herencia paralelas
- Lazy Class (clase redundante)
- Generalidad especulativa
- Campo temporal (campo de valor temporal confuso)
- hombre medio
- intimidad inapropiada
- Clases alternativas con diferentes interfaces
- Clase de biblioteca incompleta (clase de biblioteca incompleta)
- Extensión local (introducir extensión local).
- Clase de datos (clase de datos ingenuos)
- Legado rechazado
3. Nueve formas de reorganizar funciones
- Función de extracción del método de extracción
- Función en línea del método en línea
- Variable temporal en línea temporal en línea
- Reemplazar Temp con Query para reemplazar variables temporales con consultas
- Introducir variable explicativa introduce variables explicativas
- Dividir variable temporal descompone variables temporales
- Quitar asignaciones a parámetros Quitar asignaciones a parámetros
- Reemplazar método con objeto de método El objeto de función reemplaza la función
- Sustituir Algoritmo Reemplazo de algoritmo
4. Ocho métodos para mover propiedades entre objetos
- Función de movimiento Move Method
- Mover campo mover campo
- Extraer clase
- Clase en línea en línea la clase
- Ocultar delegado oculta la relación de delegación
- Quitar intermediario Quitar intermediario
- Introducir método extranjero introduce funciones adicionales
- Introducir extensión local introducir extensión local
5. 16 formas de reorganizar datos
- Campo autoencapsulado Campo autoencapsulado
- Reemplazar valor de datos con objeto objeto reemplaza el valor de datos
- Cambiar valor a referencia Cambiar objeto de valor a objeto de referencia
- Cambiar referencia a valor Cambiar el objeto de referencia al objeto de valor
- Reemplazar matriz con objeto para reemplazar una matriz con un objeto
- Duplicar datos observados Duplicar los datos monitoreados
- Cambiar asociación unidireccional a bidireccional Cambiar una asociación unidireccional a una asociación bidireccional
- Cambiar asociación bidireccional a unidireccional Cambiar asociación bidireccional a asociación unidireccional
- Reemplazar número mágico con constante simbólica La constante literal reemplaza el número mágico
- Encapsular campo de paquete de campo
- Encapsular la colección de paquetes Coolection
- Reemplazar registro con clase de datos para reemplazar registros con clases de datos
- Reemplazar código de tipo con clase para reemplazar código de tipo con clase
- Reemplazar código de tipo con subclases para reemplazar el código de tipo con subclases
- Reemplazar código de tipo con estado/estrategia para reemplazar el código de tipo con estado/estrategia
- Reemplazar subclase con campos Reemplazar subclases con campos
6. Simplificar expresiones condicionales
- Descomponer Descomposición condicional expresión condicional
- Consolidar expresión condicional
- Consolodate fragmentos condicionales duplicados Fusionar fragmentos condicionales duplicados
- Eliminar indicador de control eliminar indicador de control
- Reemplazar condicional anidado con cláusulas de protección para reemplazar expresiones condicionales anidadas con cláusulas de protección
- Reemplazar condicional con polimorfismo para reemplazar expresiones condicionales con polimorfismo
- Introducir objeto nulo introduce objeto nulo
- Introducir aserción introducir aserción
7. Simplifique las llamadas a funciones
- Cambiar el nombre de la función de método cambiar el nombre
- Añadir parámetro Añadir parámetro
- Eliminar parámetro Eliminar parámetro
- Separar consulta de modificador separa la función de consulta de la función de modificación
- Parametrizar método hace que la función lleve parámetros
- Reemplazar parámetro con métodos explícitos para reemplazar parámetros con funciones explícitas
- Conservar todo el objeto mantiene el objeto intacto
- Reemplazar parámetro con métodos Reemplazar parámetros con funciones
- Introducir objeto de parámetro introducir objeto de parámetro
- Eliminar configuración Método Eliminar función de configuración
- Ocultar método ocultar función
- Reemplazar constructor con método de fábrica Reemplazar constructor con función de fábrica
- Encapsular Downcast encapsulación down transformación
- Reemplazar código de error con excepción Reemplazar código de error con excepción
- Reemplazar excepción con prueba para reemplazar excepción con prueba
8. Tratar con relaciones generalizadas
- El campo Pull Up Field se mueve hacia arriba
- La función de método de extracción se movió hacia arriba
- Levantar el cuerpo del constructor Mover hacia arriba el cuerpo del constructor
- Empuje hacia abajo Función de método hacia abajo
- Empuje hacia abajo el campo FieldId hacia abajo
- Extraer subclase extraer subclase
- Extraer superclase Extraer superclase
- Extraer interfaz Extraer interfaz
- Contraer jerarquía Contraer sistema de herencia
- De la función de plantilla de forma del método Template
- Reemplazar herencia con delegación Reemplazar herencia con delegación
- Reemplazar delegación con herencia para reemplazar delegación con herencia
9. Refactorización a gran escala
- Separar la herencia Clasificar y descomponer el sistema de herencia
- Convertir diseño procedimental en objetos Convertir diseño procedimental en diseño de objetos
- Separar el dominio de la presentación separa el dominio de la presentación/pantalla
- Extraer sistema de herencia de extracción de jerarquía