Acabo de leer el artículo Programming by Coincidence. Al final de la página hay ejercicios. Algunos fragmentos de código que son casos de "programación por coincidencia". Pero no puedo entender el error en esta pieza:'Programación por coincidencia' Ejercicio: Java File Writer
Este código proviene de un conjunto de aplicaciones de Java de propósito general . La función escribe una cadena en un archivo de registro. Es pasa su prueba de unidad, pero falla cuando uno de los desarrolladores web lo usa. ¿En qué se basa la coincidencia?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
Qué hay de malo en esto?
¿No es el caso que las pruebas unitarias no garantizan un 100% de seguridad? Quiero decir, hay muchas coincidencias que enfrentamos los desarrolladores desde que comenzamos a programar :) – bragboy
@Bragaadeesh: Esta es una prueba de unidad incorrecta porque viola el ["principio de responsabilidad única"] (http: //en.wikipedia .org/wiki/Single_responsibility_principle). Si está probando si el método registra correctamente la cadena, debe sacar la E/S del archivo. Debería recibir un 'java.io.Writer' creado desde otro lugar y escribir en él. –