I just read the article Programming by Coincidence. At the end of the page there are excercises. A few code fragments that are cases of “programming by coincidence”. But I cant figure out the error in this piece:
This code comes from a general-purpose
Java tracing suite. The function
writes a string to a log file. It
passes its unit test, but fails when
one of the Web developers uses it.
What coincidence does it rely on?
public static void debug(String s) throws IOException {
FileWriter fw = new FileWriter("debug.log", true);
fw.write(s);
fw.flush();
fw.close();
}
What is wrong about this?
This code relies on the fact that there is a file called
debug.logthat is writable in the application’s executing directory. Most likely the web developer’s application is not set up with this file and the method fails when he tries to use it.A unit test of this code will work because the original developer had the right file in the right place (and with the right permissions). This is the coincidence that allowed the unit test to succeed.