Estoy tratando de acostumbrarme a escribir pruebas unitarias regularmente con mi código, pero he leído que primero es importante escribir código comprobable . Esta pregunta toca los principios SÓLIDOS de escribir código comprobable, pero quiero saber si esos principios de diseño son beneficiosos (o al menos no perjudiciales) sin planear escribir pruebas en absoluto. Para aclarar, entiendo la importancia de escribir exámenes; No se trata de su utilidad.
Para ilustrar mi confusión, en la pieza que inspiró esta pregunta, el escritor da un ejemplo de una función que verifica la hora actual y devuelve algún valor dependiendo de la hora. El autor señala esto como un código incorrecto porque produce los datos (el tiempo) que usa internamente, lo que dificulta la prueba. Sin embargo, para mí, parece una exageración pasar el tiempo como argumento. En algún momento, el valor debe ser inicializado, y ¿por qué no más cercano al consumo? Además, el propósito del método en mi mente es devolver algún valor basado en la hora actual , al convertirlo en un parámetro implica que este propósito puede / debe cambiarse. Esta y otras preguntas me llevan a preguntarme si el código comprobable es sinónimo de código "mejor".
¿Escribir código comprobable sigue siendo una buena práctica incluso en ausencia de pruebas?
¿El código comprobable es realmente más estable? ha sido sugerido como un duplicado. Sin embargo, esa pregunta es sobre la "estabilidad" del código, pero estoy preguntando de manera más amplia si el código también es superior por otras razones, como la legibilidad, el rendimiento, el acoplamiento, etc.
func(X)
devuelve "Morning"
, reemplazar todas las ocurrencias de func(X)
con "Morning"
no cambiará el programa (es decir, llamar func
no hace nada más que devolver el valor). La idempotencia implica eso func(func(X)) == X
(que no es de tipo correcto), o que func(X); func(X);
realiza los mismos efectos secundarios que func(X)
(pero no hay efectos secundarios aquí)