Правила программирования на Си и Си++



         

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("Ох...");

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 с

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




Содержание  Назад  Вперед