277
А.3.5 Пустые строки
Использование пустых строк является важным средством для выделения
участков программы. При этом имеет смысл отделять:
1. Определения переменных:
char str [80];
int counter = 0;
fgets( str, 79, infile);
counter++;
2. Последовательности однотипных инструкций или директив:
#include
#include
#include
#define NAME_SIZE 256
#define MAX_LEN 3000
3. Функции:
int main()
{
. . .
}
char *get_name(FILE *f)
{
. . .
}
4. Любые логически завершенные блоки кода:
printf( "Enter size and delta: " ); //Блок ввода данных
scanf( "%d", &size );
scanf( "%f", &delta );
for( i=0; i{
a [i] -= delta;
b [i] += delta;
}
А.3.6 Имена
Типичной ошибкой начинающих является стремление давать всем
переменным неосмысленные однобуквенные имена, например m, n, a, s, p и т.п.
Это глубоко порочная практика, поскольку при этом теряется сам смысл
понятия имя. Однобуквенные имена принято давать только индексам.
Исключением являются случаи, когда количество переменных в процедуре
очень мало (порядка 1-3 переменных), и смысл их хорошо понятен из контекста
или комментариев. Пример – описанная выше функция factorial. Все
переменные, имеющие сколько-нибудь важное значение в программе,
необходимо снабжать именами, в той или иной мере характеризующими их
назначение, например, filename (имя файла), int_vector (целочисленный вектор),
278
size (размер), sum (сумма), maximum (максимум) и т.п. При плохом знании
английского языка можно использовать звуковые аналогии русским буквам,
например nazv_faila, razmer, summa и т.п. Это не в полной мере соответствует
представлению о "хорошем стиле", но, несомненно, гораздо нагляднее
использования совсем бессмысленных имен. Еще в большей мере сказанное
относится к именам
функций и классов. Такие имена часто делают довольно
длинными для улучшения понимаемости их смысла, а отдельные компоненты
имен начинают с большой буквы, например ObjectList, ArcSet и т.п. Имена
функций при этом рекомендуется начинать с глагола, например GetPersonName,
SetNewDate и т.п. Альтернативным
способом выделения компонент в сложных
названиях является использование символа подчеркивания, например
add_record, copy_object и т.п. Все сказанное вполне относится и к именам
файлов с программами. Имена файлов должны нести обязательную смысловую
нагрузку, поясняя свое "содержимое". Например, заголовочный файл,
содержащий описание класса vector логичнее всего назвать vector.h или
vector_description.h, а файл, содержащий реализацию
методов этого класса –
vector.cpp или vector_implementation.cpp. Все современные операционные
системы (UNIX, Windows и т.д.) поддерживают длинные имена файлов,
вследствие чего искусственно упрощать и укорачивать их нет необходимости.
Более того, при разработке крупного продукта количество исходных файлов
измеряется сотнями. В этой ситуации невозможно "помнить", в каком файле
что находится, а значит длинные и понятные имена жизненно необходимы.
Появляется также необходимость
организации хранения файлов в виде дерева.
В этом случае, указанные в примере файлы могут храниться в отдельном
подкаталоге vector и именоваться vector\vector.h и vector\vector.cpp.
Достарыңызбен бөлісу: