Правила программирования на С и С++. Главы 1-6 Страница 45. Условные операторы выделяются абзацными отступами
|
Страница 45 из 93 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 для обнаружения таких проблем. |