These types of conventions -- no curlies around simple blocks -- aren't too bad if a) your devs are adequately seasoned, and b) your devs believe in whitespace.
For instance, this isn't really so bad:
if (foo)
foo();
else
bar();
Hell, that's clean!But it's stuff like this that causes issues:
if(foo)foo();
else bar();
Sometimes I'm lucky and find this: if (foo)
foo();
else {
bar();
baz();
}
The best is abominations like this though; first, the sane formatting: if (foo)
while (i++ < x)
foo(i);
else
bar();
Or, as I have found it: if(foo)while(i++<x)foo(i);
else bar();
Seriously, that's enough for me to revoke commit privs. if(flag)
set_other_flag=1;
call_function();
(both lines necessary)Anyway, it didn't take long to narrow it down to that bit of code but it took a few more minutes to figure out why the function was always getting called. I couldn't work out what was going on until I looked at the disassembly and was forced to reassess my opinion of what code was actually being compiled. Too much python in my diet, perhaps.
I remember being surprised at the time that it had taken so long for this to happen, and I made a mental note to keep an eye out for more occurrences. That was summer 2006, and I haven't seen it happen since.
A lint tool checking for suspicious indentation would be a better use of labour.