Условные операторы выделяются абзацными отступами
Я делаю это даже в операторах из одной строки:
if( by_land )
one();
else
two();
а не так:
if( by_land ) one() else two();
Очевидным исключением является:
if( by_land )
{
one();
}
else if( by_sea )
{
two();
}
else if( by_air )
{
three();
}
Я использовал здесь скобки по двум причинам. Во-первых, я как-то попал внутрь условного оператора при отладке и забыл вставить скобки, как в следующем тексте:
if( by_land )
one(); if(debug) printf("Ох...");
else if ( by_sea )
что привело привело фактически к:
if( by_land )
one();
if (debug)
printf("Ох...");
else
if( by_sea )
Со скобками программа к тому же лучше читается. Я часто нарушаю правило абзацных отступов, когда использую форматирование для того, чтобы показать с кристальной ясностью, что происходит. Аккуратные столбцы делают это осуществимым:
if ( by_land ) one();
else if ( by_sea ) two();
else if ( by_tunnel ) three();
но это — нечитаемо:
if (by_land)one();
else if(by_sea)two();
else if(by_tunnel)three();
Подобный код никуда не годится:
for ( a ; b ; c );
while ( ++i 10 );
Слишком просто случайно сделать следующее:
while ( i 10 );
++i;
(Другими словами, "вечно сравнивать i с
, затем увеличить i"). Если точка с запятой никогда не ставится в конце строки, начинающейся с for или while, то вы можете использовать утилиту поиска строки типа grep для обнаружения таких проблем.