Tip of the week#4: Don’t let functions fail silently
Sometimes it is tempting to have a function return null without doing anything if a certain pre-condition isn’t satisfied (i.e., with something like if (foo->bar < 0) return;). After all, the entire program shouldn’t abort just because the function sees an input that is inappropriate, right? I disagree.
I think that you should rarely have a function return without doing anything. Turn these conditions into asserts so that the function fails with a bang when it sees invalid input. Why are you even passing invalid inputs into the function in the first place? If many of your functions fail silently, then bugs can go un-noticed and surface at really bad times.
In general, you need to keep the tightest net you can around your code to make sure that all bugs manifest themselves as early as possible.