
- •Оглавление
- •Введение
- •1. Рекомендации по изучению теоретического материала
- •1.1. Общие указания
- •1.2. Рекомендации по конкретным разделам курса
- •1.3. Методология обобщенного программирования
- •Почему не интерфейсы?
- •Вызов объекта
- •Реализация компараторов
- •Техника traits
- •2. Рекомендации по подготовке эссе, рефератов и докладов
- •2.1. Эссе: рекомендации по подготовке
- •2.2. Рефераты: рекомендации по подготовке
- •2.3. Доклады: рекомендации по подготовке
- •2.4. Моделирующие программы: рекомендации по разработке
- •3.2. Домашнее задание №2. Использование алгоритмов и контейнеров данных в прикладной задаче. Задачи домашнего задания
- •Задание
- •Требования к отчетности
- •Предлагаемые этапы выполнения задания
- •Теоретический материал, необходимый для выполнения домашнего задания
- •Функциональный и объектно-ориентированный подходы к программированию – краткое описание
- •Основы uml
- •Понятие агрегации в объектно-ориентированном программировании
- •Рекомендованные правила оформления исходных текстов
- •4.1. Правила выбора идентификаторов
- •4.2. Выравнивание исходных текстов Символ табуляции запрещён
- •Выравнивание блоков
- •Пробелы
- •Длинные операторы
- •4.3. Комментарии
- •Заключение
- •Литература
- •Кафедра компьютерной фотоники
4.1. Правила выбора идентификаторов
Класс или структура – TUser, IRoot, ...
Члены данных классов – ptr_Object, Object. Префикс m_ не рекомендуется, т.к. отличить член данных от локальных, статических и глобальных переменных можно и без него. Скорее префикс m_ в моем понимании может означать расстояние в метрах.
Статические и глобальные объекты – s_ptr_Object, g_Object.
Локальные переменные и параметры функции – var_local.
Пространство имен – legend_kernel:: (одинаковое с локальными переменными обозначение не страшно, namespace сложно спутать с локальной переменной).
Указатели – ptr_object (локальная переменная), ptr_Data (член данных).
Переменные с единицами измерения: nm_Distance (расстояние в милях, член данных класса), ft_height (высота в футах, локальная переменная).
Также разрешаются префиксы, показывающие смысл переменной array_Objects, list_added_elements.
Перечислимый тип
enum TReadOptions
{
RO_Binary,
RO_Text
};
4.2. Выравнивание исходных текстов Символ табуляции запрещён
Всегда включайте замену табуляции пробелами в Microsoft Visual Studio. Это обеспечит единый вид Ваших исходных текстов при чтении их в различных редакторах.
Выравнивание блоков
С отступом в два пробела. Фигурная скобка пишется без отступа на отдельной строке.
if ( a )
{
i ++;
}
Запрещено писать непустое тело цикла или блок в if/else, не выделяя для этого хотя бы одной отдельной строки, то есть так:
if ( a ) { a = ! a; } // ЗАПРЕЩЕНО: неудобно отлаживать
if ( a ) a = ! a; //ЗАПРЕЩЕНО: неудобно отлаживать
Запрещено использовать оператор ‘,’ (запятая) для того, чтобы не писать фигурных скобок.
if ( a )
a = ! a, i ++; // ЗАПРЕЩЕНО: плохо читается и отлаживается
Пробелы
Пробелы в выражениях используются. Между любыми двумя содержательными лексемами необходима вставка ровно одного символа пробела. Пробелы обычно не ставятся:
вокруг лексемы '.' (точка) в значении “доступ к члену класса”;
вокруг лексемы '->' в значении “доступ к члену класса по указателю”;
перед лексемами ‘,’ (запятая) и ‘;’ (точка с запятой);
после лексемы '&' в значении взятия указателя.
По следующим мотивам отдельные пробелы можно опускать:
чтобы избежать слишком длинной строки там, где это нежелательно;
чтобы в отладчике удобнее было просматривать выражения, пользуясь курсором;
чтобы при написании текста в оболочке Microsoft Visual Studio или другом редакторе работали подсказки и автоподстановки там, где это нужно.
Дополнительные пробелы могут вставляться для выравнивания столбцов в объявлениях и списках инициализации.
Примеры:
A [ I ].ptr_Q = 187 + &h;
g.f ( ( ( 187 * 4 ) + 2 ) / 47 ) ++;
TObj_ qqqqq ( 500 );
TObj_ qq ( 400 ); //«Лишние» пробелы допустимы, если есть желание
TObj_ q ( 800 ); //зачем-то подчеркнуть наличие столбца.
Длинные операторы
Следует избегать использования длинных (более чем 80-100 символов) операторов.
4.3. Комментарии
Комментарии не могут заменить понятный код никогда. Понятный код часто может заменить комментарий. Поэтому в первую очередь - пишите понятный код. Дублирование информации в комментариях ("SetScale устанавливает масштаб") и исправление с помощью комментариев последствий неудачно выбранных имен переменных - не приветствуется.
Тем не менее, часто комментарии нужны. Если Вы хотите уточнить правила работы с методом - это логично и разумно делать в комментариях. Объем комментариев должен быть достаточен, чтобы Вы, взглянув на исходный текст через год, быстро разобрались, что он делает и почему написан именно так.