Patrones de Diseño y Control de Versiones en el Desarrollo de Software
Enviado por Chuletator online y clasificado en Informática y Telecomunicaciones
Escrito el en español con un tamaño de 5,59 KB
Patrones de Diseño
Un patrón de diseño es una solución bien documentada que los expertos aplican para solucionar nuevos problemas porque han sido utilizadas con éxito.
Para aplicar un patrón de diseño:
- Se identifican partes de un problema similares a otros problemas encontrados.
- Se generaliza la solución aplicada, adaptando la solución general al problema actual.
Beneficios de los Patrones de Diseño
- Catálogo de patrones fáciles de consultar y aplicar (documentados los pros y los contras de cada uno).
- Proporcionan un vocabulario común entre desarrolladores.
Clasificación de Patrones de Diseño
- De creación: Abstraen el proceso de creación de instancias de objetos.
- Estructurales: Tratan la composición de clases u objetos y cómo son utilizados para componer estructuras de mayor tamaño.
- De comportamiento: Caracterizan el modo en que las clases y objetos interactúan entre ellos.
Ejemplos de Patrones de Diseño
- Clase:
- De creación (fábrica de métodos)
- Estructurales (adaptador)
- De comportamiento (intérprete)
- Objeto:
- De creación (constructor, singleton)
- Estructurales (proxy, peso ligero)
- De comportamiento (iterator, memento)
Singleton
- Acceso controlado a la instancia única.
- Espacio de nombres reducido.
- Permite refinamiento de operaciones mediante las subclases.
- Permite un número variable de instancias.
- Es más flexible que los métodos estáticos.
Iterator
Proporciona un medio de navegar por los datos de una lista sin exponer su estructura interna.
- Se puede atravesar la lista de varias maneras pero sin añadir operaciones a ella por cada tipo de recorrido.
- Se puede realizar varios recorridos simultáneamente.
Patrones de Diseño Más Usuales
Los patrones de refactorización son prácticas para refactorizar nuestro código.
- Plantean problemas concretos y su solución refactorizada.
- El catálogo de refactorización más extendido es el de Martin Fowler.
Ejemplos de Patrones de Refactorización
- Extraer método:
- Se convierte el fragmento de código en un método.
- Separar variables temporales:
- Se crea una variable temporal diferente para cada asignación.
- Eliminar asignaciones a parámetros:
- Usar variable temporal en lugar de un parámetro. (Un argumento o parámetro es una variable que puede ser recibida por una rutina o subrutina. Existen cuatro formas de pasar un argumento a una función (subrutina) o procedimiento: por valor, por referencia, por valor-resultado y por nombre.)
- Fragmentos duplicados:
- Sacar el fragmento de código fuera de la expresión.
- Reemplazar datos y valores por objetos:
- Un atributo que necesita información o tiene comportamiento adicional debe convertirse en un objeto.
- Reemplazar array por objeto:
- Si en el array existen elementos con significado diferente, se reemplaza por un objeto con un atributo para cada elemento.
- Encapsular atributo:
- Los atributos públicos los convertimos en privados y les creamos métodos de acceso.
Antipatrones
Los antipatrones son malos usos que están extendidos y que no aportan soluciones efectivas a un problema. Un antipatrón es una mala práctica.
Son aquellos que describen una mala solución o que describen cómo salir de una mala situación.
Resumen
- Patrones de diseño: Muestran una buena solución en forma de clases y relaciones entre clases a un problema típico.
- Refactorizaciones: Muestran la forma de transformar un código típico sin calidad (malos olores) en un código de calidad. Normalmente al aplicar una refactorización se obtiene un patrón de diseño.
- Existen catálogos de patrones y refactorizaciones que todo desarrollador debe conocer, como el libro de Refactoring de Martin Fowler.
Control de Versiones
El desarrollo del software siempre es progresivo, y esta evolución es controlada.
Durante la explotación y la fase de mantenimiento se realizan modificaciones del producto.
El motivo de esto es la evolución, el software cambia con el tiempo y es necesario tener controlada esta evolución, siendo necesario recuperar versiones antiguas.
Una "versión" es la forma particular que adopta un objeto en un contexto.
Desde el punto de vista de evolución, es la forma particular de un objeto en un instante. Se suele denominar "revisión".
Es habitual centralizar el almacenamiento de las distintas versiones de cada componente, este almacén se llama "repositorio".
Beneficios de un Repositorio
- El repositorio permite ahorrar espacio de almacenamiento, evitando guardar por duplicado elementos comunes a varias versiones.
- Facilita almacenar información de la evolución del sistema.
Los programas de control de versiones son un grupo de aplicaciones que gestionan los cambios en el código fuente y poder revertirlos.