Правила программирования на С и С++. Главы 1-6 - Помечайте конец длинного составного оператора чем-нибудь, имеющим смысл
ОГЛАВЛЕНИЕ
Страница 36 из 93
32. Помечайте конец длинного составного оператора чем-нибудь, имеющим смысл.
Прежде всего, подобные комментарии в конце блока:
while ( a ? b ){
for ( i = 10; --1 >= 0; ){
f( i );} // for} // whileне дают ничего, кроме неразберихи, если блоки короткие. Я использую их только тогда, когда составной оператор слишком велик, чтобы поместиться на экран (в моем текстовом редакторе около 40 строк) или в нем столько уровней вложений, что я не могу понять суть происходящего. Комментарии в конце блока обычно целесообразны в больших составных операторах, но мне приходилось часто видеть подобный код:На первой странице:
while ( a ? b ){
while ( something_else() )
{
for ( i = 10; --1 >= 0; ){
for ( j = 10; --j >= 0; ){
// далее идет масса кодаНа какой-то из последующих страниц: } // for} // for} // while} // while
Эти комментарии слишком кратки, чтобы быть полезными. Завершающие блок комментарии должны полностью описывать управляющий оператор. Завершающие блок комментарии из предыдущего примера должны выглядеть таким образом: } // for ( j = 10; --j >= 0; )} // for ( i = 10; --1 >= 0; )} // while ( something_else() )} // while ( a ? b )
Так как #ifdef почти всегда расположен на некотором расстоянии от #endif, то я всегда ставлю метку у #endif:#ifndef __SOMEFILE_H_
#define __SOMEFILE_H_
// здесь следует 1000 строк программы
#endif // __SOMEFILE_H_
То же самое я делаю с #else.