Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Return 1;






}

 

Как видно, отличие состоит в положении открывающейся скобки. Однако закрывающаяся скобка в обоих случаях должна находиться на уровне управляющего оператора или описания.

 

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

 

Неправильно Правильно

———————————————————————————————-

while(i++< dim) while(i++ < dim)

move(a, b, ptr[base+off*i]); move(a, b, ptr[base + off*i]);

Дополнительные пробелы могут быть также использованы для выравнивания сходных по смыслу или однотипных частей выражений с целью улучшения наглядности, например, при объявлении переменных и для серии присваиваний:

 

Int a, size;

char *buf;

Float lenght1, lenght2;

...

a = 1;

lenght1 = GetLength();

lenght2 = 0;

size = (int) lenght1;

Пустые строки. Использование пустых строк является важным средством для выделения участков программы. При этом имеет смысл отделять:

1) определения переменных:

char str[80];

int counter = 0;

Fgets(str, 79, infile);

counter++;

2) последовательности однотипных инструкций или директив:

#include < math.h>

#include < stdio.h>

#include < stdlib.h>

#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< size; i++) //Блок использования данных

{ a[i] -= delta;

b[i] += delta;

}

Имена. Типичной ошибкой начинающих является стремление давать всем переменным неосмысленные однобуквенные имена, например m, n, a, s, p и т.п. Это глубоко порочная практика, поскольку при этом теряется сам смысл понятия «имя». Однобуквенные имена принято давать только индексам. Исключением являются случаи, когда количество переменных в процедуре очень мало (порядка 1–3 переменных) и смысл их хорошо понятен из контекста или комментариев. Пример – описанная выше функция factorial.

Все переменные, имеющие сколько-нибудь важное значение в программе, необходимо снабжать именами, в той или иной мере характеризующими их назначение, например, filename (имя файла), int_vector (целочисленный вектор), 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 95/98/NT и т.д.) поддерживают длинные имена файлов, вследствие чего искусственно упрощать и укорачивать их нет необходимости. Более того, при разработке крупного продукта количество исходных файлов измеряется сотнями. В этой ситуации невозможно “помнить”, в каком файле что находится, а значит, длинные и понятные имена жизненно необходимы. Появляется также необходимость организации хранения файлов в виде дерева. В этом случае указанные в примере файлы могут храниться в отдельном подкаталоге vector и именоваться

 

vector\vector.h и vector\vector.cpp.

Комментарии. Время, потраченное на написание комментариев, многократно окупится при любых модификациях программы. Однако комментировать все подряд, включая очевидные действия, как в следующем примере, тоже не стоит:

 

size = 10; //Присвоить size значение 10

for(i=0; i< size; i++) //Цикл по i от 0 до size

{...

}

Такого рода комментарии только загромождают программу.

 

Комментировать следует:

1) заголовок файла, описывая содержимое данного файла;

2) заголовок функции, поясняя назначение ее аргументов и смысл самой функции;

3) вводимые переменные и структуры данных;

4) основные этапы и особенности реализуемых алгоритмов;

5) любые места, которые трудны для быстрого понимания, в особенности использование различных программных “трюков” и нестандартных приемов.

 



Поделиться с друзьями:

mylektsii.su - Мои Лекции - 2015-2024 год. (0.009 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал