Question 1
Question
¿Que intentamos hacer cuando refactorizamos un código?
Answer
-
Hacerlo más fácil de comprender.
-
Hacerlo más complejo, pero con un funcionamiento más optimo.
-
Hacerlo más fácil de modificar.
-
Hacer un código más limpio.
-
Tener una revisión del código para ver su funcionalidad detectar fallos.
-
Cambiar la funcionalidad del programa de manera rápida.
-
Hacer unos cambios en el codigo sin cambiar su comportamiento observable
Question 2
Question
¿Cual es el objetivo final de la refactorizacion?
Answer
-
Mantener el código sencillo y bien estructurado.
-
Entender la funcionalidad del programa y mejorarlo.
-
Crear extensiones de ese código para añadir nuevas funcionalidades.
Question 3
Question
Cual es la etapa de desarrollo especifica para realizar una refactorizacion.
Question 4
Question
¿Cuales son las razones de la refactorizacion?
Answer
-
Calidad. Hacer que el código sea sencillo bien estructurado, permitiendo que una persona externa al equipo de desarrollo pueda entender el proyecto sin haber estado integrado durante varios meses.
-
Eficiencia. Mantener un buen diseño y un código estructurado nos permite ser más eficientes a la hora de desarrollar. Mejora las modificaciones a la hora de eliminar código repetido o una simplificación del diseño.
-
Evitar la reescritura de código. Reescribir el código es peor que refactorizarlo. Leer y modificar un código que no se conoce es bastante complicado si este código no sigue estándares.
-
Modificación. Para modificar es bueno refactorizar. La refactorizacion nos permite modificar un código de manera segura y eso nos permite continuar de manera positiva el proyecto.
-
Escalabilidad. Refactorizar nos permite escalar un proyecto para añadirle funciones y hacerlo mucho más completo.
Question 5
Question
¿Que se debe hacer los cambios de un proyecto empiezan a ser muy costosos?
Answer
-
Continuar. Una vez empezado se debe terminar.
-
Frenar la inercia de seguir desarrollando.
-
Reiniciar de cero. Si algo que has hecho empieza a hacer costoso igual lo puedes hacer de cero de una manera más optima.
Question 6
Question
¿Como se conoce a los síntomas que indican que algún código de software tiene problemas?
Answer
-
Bad Smells
-
Código errado
-
Código problematico
Question 7
Question
¿Por que es imprescindible que un proyecto tenga pruebas automáticas?
Answer
-
Para saber si el programa tiene el mismo funcionamiento que antes de los cambios.
-
Para saber si el desarrollo sigue cumpliendo los requisitos que implementaba.
-
Por que refactorizar sin ellas lleva un alto riesgo.
Question 8
Question
Refactorizar es considerado un avance significativo del proyecto para los clientes.
Question 9
Question
¿Por que es importante tener la refactorizacion bajo control?
Answer
-
Por que si refactorizar se te va de las manos se puede convertir en una molestia ya que llegas a sentir que es una perdida de tiempo y sobre todo te da una sensación de no estar avanzando en el proyecto.
-
No hace falta añadir moficiaciones que el cliente no ha pedido, por lo que hay que fijar los objetivos antes de empezar a refactorizar.
-
Refactorizar es un tipo de practica de alto riesgo, si no se saben los objetivos puede resultar que se cambie demasiado el código y cree un cambio en el funcionamiento del programa.
Question 10
Question
Cuando hay problemas de comunicación en el equipo de desarrollo hay que detener el desarrollo y reunir a todo el equipo.
Question 11
Question
¿Que se debe hacer si se excede el tiempo planificado para refactorizar?
Answer
-
Es necesario un replanteamiento de la refactorizacion para no perder el tiempo o tener gastos innecesarios.
-
Planificar nunca esta de mas. Mientras mas planificado este más perfecto sera.
-
No planifiques. Déjalo para otro momento o comienza la refactorizacion sin ello.
Question 12
Question
¿Como se debe mantener la refactorizacion bajo control?
Answer
-
Definiendo claramente los objetivos antes de comenzar y estimando la duracion.
-
Teniendo un equipo vigilando de las personas que se encargan de refactorizar.
-
Haciendo documentación exhaustiva sobre la refactorizacion.
Question 13
Question
¿Es importante las reuniones diarias para facilitar la comunicación y conocer el estado actual, los problemas y el objetivo de nuestro proyecto?
Question 14
Question
¿Que es la espiral refactorizadora?
Answer
-
Una refactorizacion conduce a otra refactorizacion hasta que resulta ser mas complicada y no se puede determinar el tiempo que se tardara en refactorizar.
-
Una refactorizacion conduce a otra por lo que resulta más sencillo refactorizar el código y se tarda menos.
-
Se encuentran todos los Bad Smells y se usa una sola técnica de refactorizacion para terminar de refactorizar de forma más eficiente y rapida.
Question 15
Question
¿Que medidas aplicamos para evitar una "Espiral refactorizadora"?
Answer
-
Determinar el objetivo de la refactorizacion antes de empezar.
-
Si aparece nuevo código susceptible de refactorizacion se anota y no se refactoriza, aun.
-
Introducir código en el sistema de control de versiones.
-
Refactorizar todo el código que te encuentres.
-
Eliminar el código que sea susceptible a la refactorizacion.
Question 16
Question
Las herramientas para detectar Bad Smells ayudan a sustituir al sentido comun.
Question 17
Question
Selecciona las herramientas que sirvan para identificar Bad Smells.
Answer
-
JavaStyle.
-
JCSC
-
PMD
-
FindBug
-
EasyUML
-
BugFiction
-
PDM
Question 18
Question
¿Cuanto tiempo ocupa refactorizar?
Answer
-
Más tiempo que desarrollar.
-
Una pequeña parte relacionado al tiempo dedicado a añadir nuevas funcionalidades.
-
El mismo tiempo que desarrollar.
Question 19
Question
Tomar actitudes exigentes o criterios excesivamente personales respecto a la calidad del código puede acabar siendo un riesgo para el proyecto.
Question 20
Question
Di las practicas saludables a la hora de implantar la refactorizacion de un código dentro de un proyecto.
Answer
-
Escribir pruebas unitarias y funcionales.
-
Usar herramientas especializadas.
-
Dar formación sobre patrones de refactorizacion y de diseño.
-
Refactoriar los principales fallos de diseño.
-
Comenzar a refactorizar el codigo tras añadir cada nueva funcionalidad en grupo.
-
Implantar refactorizacion continua al desarrollo completo.
-
Elegir a un equipo competente para refactorizar.
-
Refactorizar todo el proyecto.
-
Evitar refactorizar continuamente el código durante el desarrollo para evitar perder el tiempo durante el desarrollo.
Question 21
Question
¿Como ayuda la existencia de pruebas automatizadas la refactorizacion?
Answer
-
El riesgo de la refactorizacion disminuye. Al terminar se puede saber que todo sigue funcionando de manera correcta.
-
Evita efectos colaterales ya que cuando un desarrollar realiza una refactorizacion puede comprobar que no ha estropeado nada.
-
Permiten que la refactorizacion vaya más rápida por que se reduce el tiempo de comprobación sobre el funcionamiento del proyecto.
-
Aumenta la velocidad de implementacion de funcionalidades y su funcionamiento respecto al código.
-
Permite encontrar fallos en caso de implementar más funcionalidades.
-
Refactorizar sin test es una actividad de alto riesgo. Solo se debe hacer en casos sencillos y con herramientas especializadas.
Question 22
Question
¿Que significa TDD?
Answer
-
Television Digital Distante.
-
Desarrollo guiado por Pruebas.
-
Test de Direccionamiento y Digitabilidad.
Question 23
Question
¿Que es la TDD y cual es su objetivo?
Answer
-
Es una metodología ágil que propone integrar las pruebas y la refactorizacion.
-
Se busca implementar las pruebas antes de crear el código a probar. Agiliza la creacion de codigo y la realizacion de pruebas unitarias.
-
Es una metodología parecida a la scrum.
-
Busca solucionar los problemas de la "Espiral de Refactorizacion".
Question 24
Question
Di dos aspectos de gran importancia en el Desarrollo de aplicaciones.
Answer
-
La refactorizacion y las pruebas unitarias.
-
El desarrollo y ampliación del programa.
-
Tipo de mantenimiento y refactorizacion.
Question 25
Question
Selecciona ejemplos de refactorizaciones complejas o que sean triviales para el proyecto.
Answer
-
Sustituir una variable llamada "v" y renombrarla a "velocidad" para que sea más significativa
-
Crear un método común para evitar el código duplicado.
-
Trasformar el código dentro de un bloque en una subrutina.
-
Transformar una sentencia "if" en polimorfismo.
-
Reducir el tamaño de un método para reutilizarlo con mayor facilidad.
-
Cambiar un método de clase por que utiliza más elementos de la clase nueva que de la antigua.
Question 26
Question
Di que significan los siguientes patrones de refactorizacion:
[blank_start]Código duplicado.[blank_end]
[blank_start]Método Largo.[blank_end]
[blank_start]Lista larga de parámetros.[blank_end]
[blank_start]Cambio divergente.[blank_end]
[blank_start]Cirugia de escopeta.[blank_end]
[blank_start]Envidia de funcionalidad.[blank_end]
[blank_start]Clase de datos.[blank_end]
[blank_start]Legado Rechazado.[blank_end]
Answer
-
Mismo código en más de un lugar.
-
Más corto más fácil reutilizarlo.
-
Se pasan demasiados parámetros.
-
Los cambios no están relacionados.
-
Varias modificaciones en diversos lugare
-
Utiliza más elementos de otra clase.
-
Solo tienen "get" y "set".
-
Uso de pocas caracteristicas de supclass
Question 27
Question
En el patrón de refactorizacion: Lista de parámetros extensa ¿Cual es el problema principal?
Answer
-
Se pasan muchos parámetros al objeto, resultan ser demasiado difíciles de entender y suelen variar con frecuencia. Los métodos solo deberían tener aquellos minimamente necesarios para que el objeto consiga su objetivo.
-
Se debe crear una lista de parámetros extensa para evitar que el objeto consuma muchos recursos del sistema. Mejora el rendimiento.
-
El objeto recibe muchos parámetros y la mayoría no son usados. Se vuelve un método inútil y se debe eliminar.
Question 28
Question
En el patrón de refactorizacion: Cambio divergente ¿Cual es el problema principal?
Answer
-
La clase suele ser modificada por diversos motivos los cuales no tienen relación entre si.
-
La clase sufre muchos cambios. Se debe buscar una solución para que no se modifique tanto.
-
La clase tiene variables difíciles de llamar y suelen estar en privado. Las modificaciones se vuelven muy tediosas.
Question 29
Question
En el patrón de refactorizacion: Cirugía de escopeta ¿Cual es el problema principal?
Answer
-
Después de un cambio en determinado lugar, se deben cambiar otro código en diferentes partes del proyecto.
-
Es una solución referente a que se deben hacer ciertos cambios en diferentes lugares para hacer un método más sencillo.
-
Eliminar ciertos métodos relacionados inútilmente con el código a refactorizar para evitar el acceso a datos de forma incorrecta.
Question 30
Question
En el patrón de refactorizacion: Envidia de funcionalidad ¿Cual es el problema principal y como se resuelve?
Answer
-
El método utiliza más cantidad de elementos de otra clase que de la propia
-
Se suele resolver el problema pasando el método a la clase que tiene los elementos usados.
-
El método utiliza elementos de otras clases.
-
Se suele resolver pasando los datos necesarios a atributos antes de iniciar el método problemático.
Question 31
Question
En el patrón de refactorizacion: Legado Rechazado ¿Cual es el problema principal?
Answer
-
Las subclases usan pocas características de su superclase.
-
La jerarquia no fue pensada de forma correcta, ya que la subclase apenas necesita a su superclase.
-
Las superclase pasa demasiadas características a sus subclases.
-
La jerarquia es inútil por que no se necesitan distinguir las clases jerarquicamente.