I hate TDD because I have to actually debug them, sometime more so than the actual app themselves. Also, there's the issue of slow TDD suite, which means you have to optimize them or otherwise it will slow down your development pace. TDD is only good when it provide more benefits than its negative(debugging time, time waiting for it to run, time spent ripping out code). That being said, it's better than 0 test. Just…
Unless of course you are writing software that goes into a pacemaker, in which case I would want that tested like crazy for every possible scenario you can imagine including automated fuzz testing. Same goes for databases and quite a few other classes of software. In short, use common sense. Personally I love TDD. Not because of the tests, but because the resulting code IS testable, and generally testable code is mai…
This could just be internal bias, but without TDD programmers more focused on the possible error conditions. I would rather see:
If ((a/2-1) + (b/2-1)) > (largestInt/2-5))
... do something
vs.
A large try catch block.
Arguably the second is just as safe, but it's the test's you don't think to run that tend to end up as production bugs and good tests require a level of paranoia which is more important than methodology IMO.