Правило 3. Размер сдвига должен быть постоянным:
Размер сдвига не должен быть ни слишком мал, ни слишком велик. Оптимальная величина составляет 2-5 пробелов. Наиболее часто для сдвигов используют табуляцию, устанавливая при этом для нее желаемый шаг. Последняя возможность поддерживается большинством интегрированных сред разработчика.
Операторные скобки. Существует два основных стиля расстановки операторных скобок. При использовании первого стиля открывающаяся скобка помещается на той же строке, что и управляющая конструкция, а закрывающаяся – строго на уровне управляющей конструкции:
int factorial( int n ) { if( n > 1 ) return n * factorial( n-1 ); if( n < 0 ) { fprintf( stderr, “Factorial error: negative argument\n” ); return -1; //Заведомоневозможныйрезультат} return 1;
}
Второй подход показан на том же примере:
int factorial( int n )
{ if( n > 1 ) return n * factorial( n-1 ); if( n < 0 ) { fprintf( stderr, “Factorial error: negative argument\n” ); return -1; //Заведомоневозможныйрезультат} return 1;
}
Как видно, отличие состоит в положении открывающейся скобки. Однако закрывающаяся скобка в обоих случаях должна находиться на уровне управляющего оператора или описания.
Пробелы. Особенность зрительного восприятия человека такова, что пробелы распознаются лучше других знаков синтаксиса. Поэтому отдельные элементы текста необходимо отделять пробелами, несмотря на то что первые, возможно, уже отделены другими знаками препинания (скобки, запятые, точки с запятой и т.д.). В особенности важно отделять стоящие рядом операторы и списки аргументов функций:
Дополнительные пробелы могут быть также использованы для выравнивания сходных по смыслу или однотипных частей выражений с целью улучшения наглядности, например, при объявлении переменных и для серии присваиваний:
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) любые места, которые трудны для быстрого понимания, в особенности использование различных программных “трюков” и нестандартных приемов.
Сводная таблица унифицированных требований к оформлению письменных студенческих работ
Обязательны для применения студентами, преподавателями, организаторами учебного процесса
№ п.п. | Объект унификации | Параметры унификации | ||
Курсовая работа | Бакалаврская работа | Дипломная работа (проект)Магистерская диссертация | ||
1 | Формат листа бумаги | А4 | А4 | А4 |
2 | Размер шрифта | 14 пунктов | 14 пунктов | 14 пунктов |
3 | Название шрифта | Times New Roman | Times New Roman | Times New Roman |
4 | Междустрочный интервал | Полуторный | Полуторный | Полуторный |
5 | Кол-во строк на странице | 28-30 строк(1800 печатных знаков) | 28-30 строк(1800 печатных знаков) | 28-30 строк(1800 печатных знаков) |
6 | Абзац | 1,25 см (5 знаков) | 1,25 см (5 знаков) | 1,25 см (5 знаков) |
7 | Поля (мм) | Левое, верхнее и нижнее – 20, правое – 10. | Левое, верхнее и нижнее – 20, правое – 10. | Левое, верхнее и нижнее – 20, правое – 10. |
8 | Общий объем без приложений | 20-25 страниц машинописного текста | 50-60 с. машинописного текста | 90-110 страниц машинописного текста |
9 | Объем введения | 2-3 с. машинописного текста | 2-4 с. машинописного текста | 5-7 с. машинописного текста |
10 | Объем основной части | 15-20 с. машинописного текста | 40-50 с. машинописного текста | 80-100 с. машинописного текста |
11 | Объем заключения | 2-2,5 с. машинописного текста(примерно равен объему введения) | 3-5 с. машинописного текста(примерно равен объему введения) | 5-7 с. машинописного текста(примерно равен объему введения) |
12 | Нумерация страниц | Сквозная, в нижней части листа, посередине. На титульном листе номер страницы не проставляется | Сквозная, в нижней части листа, посередине. На титульном листе номер страницы не проставляется | Сквозная, в нижней части листа, посередине. На титульном листе номер страницы не проставляется |
13 | Последовательность приведения структурных частей работы | Титульный лист. Задание на курсовую работу. Содержание. Введение. Основная часть. Заключение. Глоссарий. Список использованных источников. Список сокращений. Приложения | Титульный лист. Задание на выполнение выпускной квалификационной работы. Содержание. Введение. Основная часть. Заключение. Глоссарий. Список использованных источников. Список сокращений. Приложения | Титульный лист. Задание на выполнение выпускной квалификационной работы. Содержание. Введение. Основная часть. Заключение. Глоссарий. Список использованных источников. Список сокращений. Приложения |
14 | Оформление структурных частей работы | Каждая структурная часть начинается с новой страницы. Наименования приводятся с абзаца с прописной (заглавной буквы). Точка в конце наименования не ставится. | Каждая структурная часть начинается с новой страницы. Наименования приводятся с абзаца с прописной (заглавной буквы). Точка в конце наименования не ставится. | Каждая структурная часть начинается с новой страницы. Наименования приводятся с абзаца с прописной (заглавной буквы). Точка в конце наименования не ставится. |
* Информация, содержащаяся в электронных ресурсах локального и удаленного доступа, считается опубликованной.