wayground logo

Free Printable Worksheets

NEW

Font size

S
M
L
XL
Worksheets

Malos olores en el código

Total questions: 63

Worksheet time: 32mins

Name
Class
Date
1.

¿Qué significa la frase 'If it stinks, change it' en el contexto de la refactorización de código?

a)

Que si el código es difícil de entender o mantener, debe modificarse.

b)

Que el código debe eliminarse si no funciona.

c)

Que el código debe comentarse extensamente.

d)

Que el código debe ejecutarse varias veces para probarlo.

2.

Es importante saber cuándo empezar y cuándo detener la refactorización porque:

a)

Permite optimizar el código sin gastar recursos innecesarios.

b)

Evita que el código funcione correctamente.

c)

Hace que el desarrollo sea más lento.

d)

Impide la colaboración entre desarrolladores.

3.

¿Qué criterio sugiere el texto para identificar 'malos olores' en el código?

a)

La presencia de patrones repetitivos y poco claros.

b)

El uso de comentarios extensos en el código.

c)

La cantidad de líneas de código por función.

d)

La utilización de variables globales en todos los métodos.

4.

¿Qué significa el 'Nombre misterioso' como mal olor en el código según el texto?

a)

Un nombre que es claro y fácil de entender

b)

Un nombre que causa confusión y dificulta la comprensión

c)

Un nombre que es demasiado largo

d)

Un nombre que se repite en el código

5.

¿Cuál es una de las refactorizaciones más comunes para solucionar el 'Nombre misterioso'?

a)

Cambiar la estructura del código

b)

Renombrar funciones, variables o campos

c)

Eliminar comentarios

d)

Duplicar el código

6.

El 'Código duplicado' ocurre cuando _________.

a)

la misma estructura de código aparece en más de un lugar

b)

el código se ejecuta más rápido de lo esperado

c)

el código contiene errores de sintaxis

d)

el código utiliza demasiadas variables

7.

¿Cuál es una solución mencionada en el texto para el problema de código duplicado?

a)

Ignorar las duplicaciones

b)

Unificar el código usando métodos como 'Extract Function' o 'Slide Statements'

c)

Escribir más comentarios

d)

Renombrar variables

8.

¿Cuál es la principal ventaja de tener funciones pequeñas en los programas, según el texto?

a)

Son más rápidas

b)

Son más fáciles de entender y mantener

c)

Consumen menos memoria

d)

Permiten más errores

9.

Según el texto, ¿qué técnica se recomienda cuando se siente la necesidad de comentar el código?

a)

Escribir un comentario largo

b)

Escribir una función en vez de comentar

c)

Eliminar el código

d)

Usar variables globales

10.

Completa el espacio en blanco: 'La clave para entender fácilmente las funciones pequeñas es _______.'

a)

tener un buen nombre para la función

b)

escribir mucho código en una sola función

c)

ignorar los nombres de las variables

d)

utilizar funciones muy largas

11.

¿Qué problema puede surgir al extraer una función con muchos parámetros y variables temporales, según el texto?

a)

Puede dificultar la comprensión y el mantenimiento del código.

b)

Se mejora la eficiencia del programa.

c)

Se reduce la cantidad de errores en el código.

d)

Se facilita la reutilización de la función.

12.

Las listas largas de parámetros pueden ser problemáticas en la programación porque:

a)

Dificultan la legibilidad y el mantenimiento del código.

b)

Permiten mayor velocidad de ejecución.

c)

Facilitan la depuración de errores.

d)

Hacen el código más seguro.

13.

El principal problema de los datos globales en el desarrollo de software es:

a)

Dificultan el mantenimiento y depuración del código.

b)

Facilitan la reutilización del código.

c)

Mejoran la seguridad del software.

d)

Aumentan la velocidad de ejecución.

14.

¿Cuál de las siguientes es una técnica recomendada para reducir el tamaño de las listas de parámetros en las funciones?

a)

Utilizar objetos como parámetros

b)

Agregar más parámetros innecesarios

c)

Duplicar funciones similares

d)

Evitar el uso de funciones

15.

¿Cuál es la defensa clave contra la contaminación de datos en un programa según el texto?

a)

Usar variables globales

b)

Encapsular la variable

c)

Permitir acceso libre a los datos

d)

No controlar el acceso a los datos

16.

Complete la frase: Los datos globales son especialmente peligrosos cuando son _______.

a)

mutables

b)

constantes

c)

privados

d)

inalterables

17.

¿Qué método se recomienda para separar la parte libre de efectos secundarios de la que realiza la actualización de datos?

a)

Encapsulate Variable

b)

Extract Function

c)

Split Variable

d)

Slide Statements

18.

¿Cuál es la ventaja de usar funciones estrechas para actualizar datos según el texto?

a)

Son más fáciles de monitorear y evolucionar.

b)

Permiten mayor consumo de memoria.

c)

Aumentan la complejidad del código.

d)

Dificultan la identificación de errores.

19.

Según el texto, los datos mutables que pueden calcularse en otro lugar son una fuente de confusión y errores.

a)

Verdadero

b)

Falso

20.

¿Qué es el 'Cambio divergente' en el desarrollo de software según el texto?

a)

El cambio divergente ocurre cuando un módulo se cambia a menudo por diferentes razones, normalmente porque mezcla diferentes contextos que deberían estar separados.

b)

Es el proceso de fusionar varios módulos en uno solo para simplificar el sistema.

c)

Se refiere a la actualización simultánea de todos los módulos del sistema por una única razón.

d)

Es el cambio que ocurre cuando un módulo nunca necesita ser modificado después de su creación.

21.

¿En qué se diferencia la 'Cirugía de escopeta' del 'Cambio divergente' según el texto?

a)

La cirugía de escopeta es lo opuesto al cambio divergente; ocurre cuando cada vez que se realiza un cambio, hay que hacer muchas pequeñas ediciones en varios lugares.

b)

La cirugía de escopeta implica realizar un solo cambio grande en un único lugar.

c)

El cambio divergente requiere modificar muchos módulos sin relación entre sí.

d)

La cirugía de escopeta y el cambio divergente son exactamente lo mismo.

22.

¿Qué es la 'Feature Envy' según el texto?

a)

Cuando una función en un módulo pasa más tiempo comunicándose con funciones o datos dentro de otro módulo que dentro de su propio módulo.

b)

Cuando una función tiene demasiados parámetros.

c)

Cuando una clase tiene demasiados métodos.

d)

Cuando el código está desorganizado.

23.

¿Cuál es la solución principal para el caso de 'Feature Envy'?

a)

Usar Move Function para mover la función al módulo con los datos.

b)

Eliminar la función.

c)

Dividir la función en partes más pequeñas.

d)

Usar Inline Class.

24.

Complete la frase: Una táctica útil para la cirugía de escopeta es usar refactorizaciones de inlining, como ________, para juntar la lógica pobremente separada.

a)

Inline Function o Inline Class

b)

Extract Method

c)

Replace Temp with Query

d)

Move Method

25.

¿Qué patrón de diseño se menciona como excepción a la regla de juntar datos y comportamiento?

a)

Singleton

b)

Strategy y Visitor

c)

Observer

d)

Factory

26.

¿Qué son los 'Data Clumps' según el texto?

a)

Variables que se usan una sola vez

b)

Datos que tienden a agruparse y aparecen juntos en varios lugares

c)

Clases que no tienen métodos

d)

Objetos que no tienen atributos

27.

¿Cuál es una señal de que tienes un 'Data Clump'?

a)

Si puedes eliminar uno de los valores de datos y los otros siguen teniendo sentido

b)

Si los datos aparecen en diferentes clases

c)

Si los datos se usan solo en una función

d)

Si los datos se usan como parámetros en métodos

28.

Completa la frase: 'Primitive Obsession' ocurre cuando los programadores usan tipos primitivos como ______ en lugar de crear sus propios tipos.

a)

enteros, números de punto flotante y cadenas (strings)

b)

clases y objetos complejos

c)

estructuras de datos avanzadas

d)

interfaces y módulos

29.

Completa la frase: Un ejemplo común de 'Primitive Obsession' es representar un número de teléfono como ______ en vez de un tipo propio.

a)

cadena (string)

b)

entero (integer)

c)

booleano (boolean)

d)

arreglo (array)

30.

¿Cuál es el problema principal de los 'switches' repetidos según el texto?

a)

Son difíciles de entender

b)

Hay que encontrar y actualizar todos los switches

c)

No funcionan en todos los lenguajes

d)

Son más rápidos que otras alternativas

31.

¿Qué alternativa elegante proporciona el texto para combatir la repetición de 'switches'?

a)

Usar bucles

b)

Polimorfismo

c)

Variables globales

d)

Recursión

32.

Completa la frase: Los bucles han sido una parte fundamental de la programación desde los primeros lenguajes, pero hoy en día se pueden reemplazar por _________

a)

operaciones de pipeline (como filter y map)

b)

variables globales

c)

comentarios en el código

d)

funciones recursivas para imprimir texto

33.

¿Por qué se consideraban los bucles como anacronismos en la primera edición del libro?

a)

Porque eran demasiado lentos

b)

Porque no había alternativas mejores en ese momento

c)

Porque no funcionaban en Java

d)

Porque eran difíciles de leer

34.

¿Qué es un 'Lazy Element' en el código según el texto?

a)

Un elemento que añade estructura y es muy útil

b)

Un elemento que no se necesita y puede ser una función o clase que realiza una sola función simple

c)

Un elemento que siempre se usa para refactorizar

d)

Un elemento que nunca se elimina

35.

Complete la frase: 'La generalidad especulativa puede detectarse cuando los únicos usuarios de una función o clase son ______.'

a)

casos de prueba

b)

métodos privados

c)

variables globales

d)

constructores

36.

¿Cuál es el problema principal de un 'Temporary Field' en una clase?

a)

Hace que la clase sea más fácil de entender

b)

El campo solo se establece en ciertas circunstancias y puede dificultar la comprensión de la clase

c)

Permite reutilizar el código fácilmente

d)

No afecta la comprensión de la clase

37.

¿Qué es una cadena de mensajes (Message Chain) en la programación orientada a objetos?

a)

Una cadena de mensajes ocurre cuando un cliente pide un objeto a otro objeto, y luego pide otro objeto al siguiente, y así sucesivamente.

b)

Una cadena de mensajes es una secuencia de variables globales utilizadas en una clase.

c)

Una cadena de mensajes es un método que retorna siempre el mismo valor.

d)

Una cadena de mensajes es una estructura de datos que almacena mensajes en una lista.

38.

¿Cuál es la acción recomendada para manejar las cadenas de mensajes según el texto?

a)

Eliminar el objeto intermedio

b)

Usar Hide Delegate

c)

Usar Extract Function

d)

Usar Move Function

39.

¿Cuál es una de las principales características de los objetos según el texto bajo el título 'Middle Man'?

a)

La encapsulación: ocultar detalles internos del resto del mundo.

b)

La herencia: compartir atributos entre clases.

c)

La polimorfismo: cambiar el tipo de objeto en tiempo de ejecución.

d)

La recursividad: llamar a métodos dentro de sí mismos.

40.

¿Qué se recomienda hacer cuando la mayoría de los métodos de una clase están delegando a otra clase?

a)

Se recomienda usar Remove Middle Man y hablar con el objeto que realmente sabe lo que está pasando.

b)

Se recomienda duplicar los métodos en ambas clases para mayor flexibilidad.

c)

Se recomienda eliminar la clase original y mantener solo la clase delegada.

d)

Se recomienda agregar más métodos a la clase original para evitar la delegación.

41.

¿Verdadero o falso? El uso excesivo de delegación puede llevar a que la interfaz de una clase esté compuesta principalmente por métodos que delegan a otra clase.

a)

Verdadero

b)

Falso

42.

¿Qué problema principal se menciona en la sección 'Insider Trading' sobre el intercambio de datos entre módulos en el software?

a)

Falta de comunicación

b)

Aumento del acoplamiento

c)

Pérdida de datos

d)

Reducción de la seguridad

43.

Complete la frase: Para reducir la necesidad de que los módulos se comuniquen entre sí, se recomienda usar ________ o ________ para separar sus responsabilidades.

a)

Move Function (198) o Move Field (207)

b)

Extract Class (149) o Inline Method (105)

c)

Replace Temp with Query (178) o Remove Middle Man (192)

d)

Pull Up Method (322) o Push Down Field (328)

44.

¿Cuál es una solución sugerida para evitar la colusión entre subclases y sus padres en el diseño de software?

a)

Eliminar la herencia

b)

Aplicar Replace Subclass with Delegate (381)

c)

Usar más campos

d)

Ignorar el problema

45.

¿Qué indica la presencia de demasiados campos en una clase según la sección 'Large Class'?

a)

Que la clase es eficiente

b)

Que el código está duplicado

c)

Que la clase está bien diseñada

d)

Que la clase es fácil de mantener

46.

Complete la frase: Si una clase tiene muchos métodos con mucho código en común, la solución más simple es ________ la redundancia en la propia clase.

a)

eliminar

b)

duplicar

c)

ignorar

d)

incrementar

47.

¿Cuál es uno de los grandes beneficios de usar clases según la sección 'Alternative Classes with Different Interfaces'?

a)

A) Permitir la sustitución de una clase por otra en tiempos de necesidad

b)

B) Hacer que todas las clases sean abstractas

c)

C) Usar solo métodos públicos

d)

D) Evitar la duplicación de código

48.

Según la sección 'Data Class', ¿qué característica clave tiene un 'result record' después de aplicar 'Split Phase (154)'?

a)

Es mutable

b)

Es inmutable

c)

Tiene solo métodos públicos

d)

No puede ser encapsulado

49.

Complete la frase según la sección 'Refused Bequest': Los subclases heredan los métodos y datos de sus padres, pero si no los quieren o necesitan, se recomienda crear una nueva clase hermana y usar ________ para mover el código no utilizado.

a)

Push Down Method (359) y Push Down Field (361)

b)

Extract Method (110) y Extract Class (149)

c)

Pull Up Method (322) y Pull Up Field (324)

d)

Inline Method (119) y Inline Class (154)

50.

¿Cuál es el consejo tradicional cuando una herencia rechazada está causando confusión y problemas en el código?

a)

Ignorar el problema

b)

Seguir el consejo tradicional

c)

Refactorizar siempre

d)

Eliminar la herencia

51.

¿Por qué los comentarios en el código a menudo se consideran un 'desodorante'?

a)

Porque siempre mejoran el código

b)

Porque ocultan el mal olor del código malo

c)

Porque explican el funcionamiento

d)

Porque son obligatorios

52.

Completa la frase: Cuando sientas la necesidad de escribir un comentario, primero intenta _______ el código para que cualquier comentario se vuelva superfluo.

a)

refactorizar

b)

compilar

c)

borrar

d)

copiar

53.

¿Cuándo es un buen momento para usar un comentario en el código según el texto?

a)

Cuando no sabes qué hacer o necesitas explicar por qué hiciste algo, especialmente para ayudar a futuros modificadores.

b)

Cuando el código es muy corto y fácil de entender.

c)

Solo cuando el código contiene errores.

d)

Siempre que escribas cualquier línea de código, sin importar su complejidad.

54.

¿Cuál es la definición de 'refactorización' como sustantivo según el texto?

a)

Un cambio realizado en la estructura interna del software para facilitar su comprensión y abaratar su modificación sin cambiar su comportamiento observable.

b)

Un proceso de eliminar errores en el software para mejorar su rendimiento.

c)

La creación de nuevas funcionalidades en el software sin modificar el código existente.

d)

La documentación detallada de cada función en el software para facilitar su uso.

55.

¿Cuál es la definición de 'refactorización' como verbo según el texto?

a)

Reestructurar el software aplicando una serie de refactorizaciones sin cambiar su comportamiento observable.

b)

Eliminar partes del software que no se utilizan para mejorar el rendimiento.

c)

Agregar nuevas funcionalidades al software sin modificar el código existente.

d)

Cambiar el diseño visual del software para hacerlo más atractivo.

56.

¿Cuál es el objetivo principal de la refactorización?

a)

Mejorar el rendimiento del software

b)

Cambiar el comportamiento observable del software

c)

Facilitar la comprensión y modificación del software sin cambiar su comportamiento observable

d)

Añadir nuevas funcionalidades

57.

¿Qué significa el término 'restructuración' según el texto?

a)

Añadir nuevas funcionalidades

b)

Reorganizar o limpiar una base de código

c)

Eliminar errores

d)

Optimizar el rendimiento

58.

Completa la frase: 'Si alguien dice que su código estuvo roto por un par de días mientras estaban refactorizando, puedes estar bastante seguro de que ______.'

a)

no estaban refactorizando

b)

estaban probando nuevas funciones

c)

olvidaron guardar los cambios

d)

el equipo estaba de vacaciones

59.

¿Cuál es la diferencia principal entre la refactorización y la optimización del rendimiento según el texto?

a)

La refactorización busca mejorar la funcionalidad

b)

La optimización busca que el código sea más fácil de entender

c)

La refactorización busca que el código sea más fácil de modificar y entender, mientras que la optimización busca mejorar el rendimiento

d)

No hay diferencia

60.

¿qué actividades se realizan bajo el 'sombrero de funcionalidad' y el 'sombrero de refactorización'?

a)

Bajo el sombrero de funcionalidad se añaden nuevas capacidades y se miden los progresos con pruebas. Bajo el sombrero de refactorización solo se reestructura el código sin añadir funcionalidades ni pruebas, salvo que sea necesario por cambios en la interfaz.

b)

Bajo el sombrero de funcionalidad solo se corrigen errores menores, mientras que bajo el sombrero de refactorización se añaden nuevas funcionalidades.

c)

Ambos sombreros implican únicamente la documentación del código sin realizar cambios en la funcionalidad ni en la estructura.

d)

El sombrero de funcionalidad implica eliminar funcionalidades existentes y el de refactorización implica añadir pruebas sin modificar el código.

61.

¿Cuál es el propósito de la técnica 'Extract Method' en la refactorización de código?

a)

Dividir un método grande en varios métodos más pequeños y manejables.

b)

Agregar más parámetros a un método existente.

c)

Combinar varios métodos en uno solo para simplificar el código.

d)

Eliminar métodos que no se utilizan.

62.

¿Qué significa 'Code Smell' en el contexto de la programación?

a)

Un método que se utiliza para optimizar el rendimiento del código.

b)

Un tipo de virus informático que afecta el código.

c)

Un error de sintaxis en el código.

d)

Un indicio de que el código puede ser mejorado o refactorizado.

63.

¿Cuál es la recomendación para manejar la complejidad en el código según el texto?

a)

Duplicar el código para asegurar que no se pierda información.

b)

Usar variables globales para simplificar el acceso a los datos.

c)

Escribir todo el código en un solo archivo para evitar la fragmentación.

d)

Dividir el código en módulos más pequeños y cohesivos.