Программирование >>  Решение нетривиальных задач 

1 ... 9 10 11 [ 12 ] 13 14 15 ... 77


30. Используйте аккуратные столбцы везде, где можно

Так как форматирование по сути является видом комментирования, то это правило применяйте также и к тексту программы. Два следующих блока функционально одинаковы, но заметьте, насколько легче искать имена переменных во втором блоке, причем не из-за выравнивания комментариев, а потому что имена образовали аккуратный столбец:

int x; Опишите, что делает x.

unsigned long int (*pfi)(); Опишите, что делает pfi.

const char *the variable; Опишите, что делает the variable.

int z; Опишите, что делает z.

x = 10; Здесь идет комментарий.

the variable = x; Здесь второй комментарий.

z = x; A здесь третий.

по сравнению с:

int x; Опишите, что делает x.

unsigned long int ( *pfi )(); Опишите, что делает pfi.

int z; Опишите, что делает z.

const char *the variable; Опишите, что делает

the variable. x = 10; Здесь идет комментарий.

the variable = x; Здесь второй комментарий.

z = x; A здесь третий.

Вы можете рассматривать на этот вид форматирования как по сути табличный , как если бы я создал таблицу со столбцами тип , имя и описание .

Другим хорошим местом для использования столбцов является список инициализации элементов в Си++, который я форматирую следующим образом:

class derived : public base

string str;

const int x;

public:

derived( char *init str, int init x ) {}

derived::derived( char *init str, int init x )

:base( str, x ) ,str ( init str ) ,x ( init x )



32. Помечайте конец длинного составного оператора чем-нибудь, имеющим смысл

Прежде всего, подобные комментарии в конце блока: while( a < b )

for( i = 10; --1 >= 0; )

f( i );

} for

} while

не дают ничего, кроме неразберихи, если блоки короткие. Я использую их только тогда, когда составной оператор слишком велик, чтобы поместиться на экран (в моем текстовом редакторе около 40 строк) или в нем столько уровней вложений, что я не могу понять суть происходящего. Комментарии в конце блока обычно целесообразны в больших составных операторах, но мне приходилось часто видеть подобный код:

31. Не располагайте комментариев между именем функции и открывающей скобкой

Основная сложность в следующем примере:

foo( int x )

/* Не помещайте

* комментарий

* здесь. */

...

заключается в том, что тело функции может оканчиваться на следующей странице или не помещаться на одном экране. То есть читающий не может сказать, видит ли он прототип или действительное определение. Поместите этот комментарий или до имени функции, или вставьте его в тело функции ниже открывающей скобки:

/* Или помещайте ** его здесь.

foo( int x )

/* или здесь,

** с таким же отступом, что и у кода.



На первой странице:

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.

33. Располагайте в строке только один оператор

Нет абсолютно никакой причины упаковывать в одну строку столько операторов, сколько сможете, если только у вас нет намерения сделать программу нечитаемой. Если в строке больше одной точки с запятой, то что-то неверно. Не используйте запятую-оператор (даже если вы знаете, что это такое) по той же причине. Очевидным исключением является оператор for, все три части которого должны быть на одной строке.



1 ... 9 10 11 [ 12 ] 13 14 15 ... 77

© 2006 - 2024 pmbk.ru. Генерация страницы: 0
При копировании материалов приветствуются ссылки.
Яндекс.Метрика