Правила программирования на С и С++. Главы 1-6 - Условные операторы выделяются абзацными отступами

ОГЛАВЛЕНИЕ

 

41. Условные операторы выделяются абзацными отступами.

Я делаю это даже в операторах из одной строки:

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("aagh");

else if ( by_sea )

что привело привело фактически к: if ( by_land )

one();

if (debug)

printf("aagh");

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 с 10, затем увеличить i"). Если точка с запятой никогда не ставится в конце строки, на

чинающейся с for или while, то вы можете использовать утилиту поиска строки типа grep для обнаружения таких проблем.