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

getName(), computeTotalWidth()


Совпадает с правилом для переменных, но отличие между ними состоит в их специфических формах.

7. Названия пространств имён следует записывать в нижнем регистре.

model::analyzer, io::iomanager, common::math::geometry


Общая практика в сообществе разработчиков C++.

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

template<class T> ...template<class C, class D> ...


Общая практика в сообществе разработчиков C++. Позволяет выделить имена шаблонов среди других используемых имён.

Аббревиатуры и сокращения в именах должны записываться в нижнем регистре.

exportHtmlSource(); // НЕЛЬЗЯ: exportHTMLSource();openDvdPlayer(); // НЕЛЬЗЯ: openDVDPlayer();


Использование верхнего регистра может привести к конфликту имён, описанному выше. Иначе переменные бы имели имена dVD, hTML и т. д., что не является удобочитаемым. Другая проблема уже описана выше; когда имя связано с другим, читаемость снижается; слово, следующее за аббревиатурой, не выделяется так, как следовало бы.

10. Глобальные переменные всегда следует использовать с оператором разрешения области видимости (::).

::mainWindow.open(), ::applicationContext.getName()


Следует избегать использования глобальных переменных. Предпочтительнее использование синглтонов.

11. Членам класса с модификатором private следует присваивать суффикс-подчёркивание.

class SomeClass { private: int length_;}


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

Дополнительным эффектом от суффикса-подчёркивания является разрешение проблемы именования в методах, устанавливающих значения, а также в конструкторах:

void setDepth (int depth) { depth_ = depth; }


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

Настраиваемым переменным следует давать то же имя, что и у их типа.

void setTopic(Topic* topic) // НЕЛЬЗЯ: void setTopic(Topic* value) // НЕЛЬЗЯ: void setTopic(Topic* aTopic) // НЕЛЬЗЯ: void setTopic(Topic* t) void connect(

Database* database) // НЕЛЬЗЯ: void connect(Database* db)

// НЕЛЬЗЯ: void connect (Database* oracleDB)


Сокращайте сложность путём уменьшения числа используемых терминов и имён. Также упрощает распознавание типа просто по имени переменной.

Если по какой-то причине эта рекомендация кажется неподходщей, это означает, что имя типа выбрано неверно.

Не являющиеся настраиваемыми переменные могут быть названы по их назначению и типу:

Point startingPoint, centerPoint;

Name loginName;

 

Все имена следует записывать по-английски.

fileName; // НЕ РЕКОМЕНДУЕТСЯ: imyaFayla


Английский наиболее предпочитетелен для интернациональной разработки.

Переменные, имеющие большую область видимости, следует называть длинными именами, имеющие небольшую область видимости — короткими.

Имена временных переменных, использующихся для хранения временных значений или индексов, лучше всего делать короткими. Программист, читающий такие переменные, должен иметь возможность предположить, что их значения не используются за пределами нескольких строк кода. Обычно это переменные i, j, k, l, m, n (для целых), а также c и d (для символов).