Следует избегать сокращений в именах

computeAverage(); // НЕЛЬЗЯ: compAvg();


Рассмотрим два вида слов. Первые — обычные слова, перечисляемые в словарях, которые нельзя сокращать. Никогда не сокращайте:

cmd вместо command

cp вместо copy

pt вместо point

comp вместо compute

init вместо initialize

и т. д.

Второй вид — слова, специфичные для какой-либо области, которые известны по своему сокращению/аббревиатуре. Их следует записывать сокращённо. Никогда не пишите:

HypertextMarkupLanguage вместо html

CentralProcessingUnit вместо cpu

PriceEarningRatio вместо pe

и т. д.

Следует избегать дополнительного именования указателей.

Line* line; // НЕ РЕКОМЕНДУЕТСЯ: Line* pLine;

// НЕ РЕКОМЕНДУЕТСЯ: Line* linePtr;


Множество переменных в C/C++ являются указателями. Только в том случае, когда тип объекта в языке C++ особенно важен, имя должно отражать его.

Нельзя давать булевым (логическим) переменным имена, содержащие отрицание.

bool isError; // НЕЛЬЗЯ: isNoError

bool isFound; // НЕЛЬЗЯ: isNotFound


Проблема возникает, когда такое имя используется в конъюнкции с оператором логического отрицания, что влечёт двойное отрицание. Результат не обязательно будет отрицанием !isNotFound.

Константы в перечислениях могут иметь префикс — общее имя типа.

enum Color {

COLOR_RED,

COLOR_GREEN,

COLOR_BLUE

};


Это даёт дополнительную информацию о том, где находится объявление, какие константы описаны в одном перечислении, а также какую концепцию являют собой константы.

Другим подходом является обращение к константам по их общему типу: Color::RED, Airline::AIR_FRANCE и т. д.

Обратите внимание, что имя перечисления обычно записано в единственном числе, например: enum Color {...}. Имя во множественном числе хорошо выглядит при объявлении, но не очень хорошо подходит для практического использования.

32. Классам исключений следует присваивать суффикс Exception.

class AccessException

{

:

}


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

Функциям (методам, возвращающим какие-либо значения) следует давать имена в зависимости от того, что они возвращают, а процедурам — в зависимости от того, что они выполняют (методы void).

Улучшайте читаемость. Такое именование даёт понять, что метод делает, а что нет, а также избавляет код от потенциальных побочных эффектов.

4 Файлы

4.1 Файлы исходных кодов


34. Заголовочным файлам C++ следует давать расширение .h (предпочтительно) либо.hpp. Файлы исходных кодов могут иметь расширения .c++ (рекомендуется),.C,.cc либо.cpp.

MyClass.c++, MyClass.h


Это расширения, одобряемые стандартом C++.

Класс следует объявлять в заголовочном файле и определять (реализовывать) в файле исходного кода, имена файлов совпадают с именем класса.

MyClass.h, MyClass.c++

Облегчает поиск связанных с классом файлов. Очевидное исключение — шаблонные классы, которые должны быть объявлены и определены в заголовочном файле.

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

class MyClass

{

public:

int getValue () {return value_;} // НЕЛЬЗЯ!

...

private:

int value_;

}


Заголовочные файлы объявляют интерфейс, файлы исходного кода его реализовывают. Если программисту необходимо найти реализацию, он должен быть уверен, что найдёт её именно в файле исходного кода.

Содержимое файлов не должно превышать 80 колонок.

80 колонок — широко распространённое разрешение для редакторов, эмуляторов терминалов, принтеров и отладчиков; файлы передаются между различными людьми, поэтому нужно придерживаться этих ограничений. Уместная разбивка строк улучшает читаемость при совместной работе над исходным кодом.

Наши рекомендации