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 колонок — широко распространённое разрешение для редакторов, эмуляторов терминалов, принтеров и отладчиков; файлы передаются между различными людьми, поэтому нужно придерживаться этих ограничений. Уместная разбивка строк улучшает читаемость при совместной работе над исходным кодом.