Требования к оформлению программного кода

При оформлении исходного кода программы следует придерживаться приведенных ниже правил.

Файлы.

Заголовочные файлы должны иметь расширение .h, файлы с исходным текстом на С++ .срр.

В общем случае заголовочный файл должен содержать объявление одного класса. Возможно объявление нескольких вспомогательных классов. Вспомогательные классы, как правило, элементарны и имеют гораздо меньший размер, чем основные. Файл .cpp должен совпадать по имени с заголовочным файлом и содержать определение объявленных в .h классов.

Правила именования файлов совпадают с правилами формирования идентификаторов

Все включаемые директивой #include файлы должны находиться в начале файла Включаемые файлы должны быть отсортированы и сгруппированы. Сортировка производится от низкоуровневых к высокоуровневым файлам.

Стили применения регистра букв при именовании идентификаторов

1. Pascal (Паскаль) – указание этого стиля оформления идентификатора обозначает, что первая буква заглавная и все последующие первые буквы слов тоже заглавные. Например, BackColor, LastModified, DateTime.

2. Camel (Кэмел) – указание этого стиля обозначает, что первая буква строчная, а остальные первые буквы слов заглавные. Например, borderColor, accessTime, templateName.

Именование идентификаторов

Предпочтительно использовать имена, которые ясно и четко описывают предназначение и/или смысл сущности. Имена идентификаторов следует делать как можно короче (но не в ущерб читабельности).

Современные языки позволяют формировать имя из пространств имен и типов. Главное, чтобы смысл идентификатора был понятен в используемом контексте. Например, количество элементов коллекции лучше назвать Count, а не CountOfElementsInMyCollection.

Не допускается использование подчеркивания для отделения слов внутри идентификаторов, это удлиняет идентификаторы и затрудняет чтение.

Не допускается использование аббревиатур или неполных слов в идентификаторах, если только они не являются общепринятыми.

Не допускается использование акронимов, если они не общеприняты в области информационных технологий.

Широко распространенные акронимы используйте для замены длинных фраз. Например, UI вместо User Interface или Olap вместо On-line Analytical Processing.

Имена длиннее двух букв записываются в стиле Pascal или Camel.

Для именования пользовательских типов данных (перечислений, структур, классов и т.д.) используется нотация Pascal.

В именах типов не предполагается использовать никаких префиксов.

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

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

Недопустимо наличие открытых переменных-членов класса.

Закрытые переменные-члены именуются с использованием нотации Camel и начинаются с префикса «_» (нижнее подчеркивание).

Локальные переменные именуются с использованием нотации Camel.

Параметры функции считаются ее локальными переменными и именуются соответственно.

Запрещено использовать «magic values» (неименованные константы).

Для счетчиков цикла закреплены имена i, j, k, l, n, m. Запрещено применять эти имена в другом контексте. Без крайней необходимости запрещено использовать в качестве счетчиков переменные с другими названиями.

Стиль кода

Каждая инструкция должна располагаться на отдельной строке.

Операторы должны отделяться пробелом от операндов с обеих сторон.

После запятой должен быть пробел.

После точки с запятой, если она не последняя в строке (напр. в инструкции for), должен быть пробел.

Перед запятой или точкой с запятой пробелы не ставятся.

После ключевого слова (напр. if, while, for) перед открывающей круглой скобкой (если она есть) должен быть пробел.

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

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

 

Пример оформления if-else:

           if (condition)

           {

                          DoSomething();

           }

           else if (condition)

           {

                          DoSomethingOther();

           }

           else

           {

                          DoSomethingOtherAgain();

           }

Пример оформления switch

           switch (condition)

           {

           case 1:

                          x = ...;

                          break;

           case 2:

                          x = ...;

                          break;

           case 3:

                          x = ...;

                          break;

           default:

                          x = ...;

                          break;

           }

Пример оформления for:

           for (int i = 0; i < 5; i++)

           {

                          DoSomething();

           }



Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: