Plus ou moins, c'est un jeu sur le balançant d'autre problème.
Par exemple,
if( blah )
if ( more blah )
// do some blah
else
// no blah I suppose
Sans accolades, le reste est ambigu, car vous ne savez pas si elle est associée à la première ou à la seconde si l'instruction. Donc, vous avez à revenir sur un compilateur convention (par exemple en Pascal ou en C, le compilateur suppose le balançant d'autre est associée à la plus proche si l'état) afin de résoudre l'ambiguïté, ou de ne pas le compiler entièrement si vous ne souhaitez pas autoriser une telle ambiguïté dans la première place.
De même,
try
try
// some code that throws!
catch(some blah)
// which try block are we catching???
catch(more blah )
// not so sure...
finally
// totally unclear what try this is associated with.
Vous pourriez résoudre avec une convention, où les blocs catch sont toujours associés avec le plus proche d'essayer, mais je trouve cette solution permet en général de programmeurs à écrire le code qui est potentiellement dangereux. Par exemple, en C, ceci:
if( blah )
if( more blah )
x = blah;
else
x = blahblah;
...est de savoir comment le compilateur pourrait interpréter cette si/si/d'autre bloc. Cependant, il est également tout à fait légitime de vis de votre mise en retrait et à écrire:
if( blah )
if( more blah )
x = blah;
else
x = blahblah;
...qui fait désormais apparaître comme l'autre est associée à l'extérieur si la déclaration, alors qu'en fait, il est associé à l'intérieure si l'instruction en raison de C conventions. Donc, je pense que exigeant que les accolades va un long chemin vers la résolution de l'ambiguïté et de prévention plutôt sournois bug (ces sortes de questions peuvent être facile à manquer, même au cours de l'inspection de codes). Des langages comme python n'ont pas ce problème car l'indentation et les espaces en question.