Имена объектов не указываются явно, следует избегать указания названий объектов в именах методов

line.getLength(); // НЕ РЕКОМЕНДУЕТСЯ: line.getLineLength();


Второй вариант смотрится вполне естественно в объявлении класса, но совершенно избыточен при использовании, как это и показано в примере.

(Пункт № 16 отсутствует.— Примечание переводчика.)

3.2 Особые правила именования


17. Слова get/set должны быть использованы везде, где осуществляется прямой доступ к атрибуту.

employee.getName();

employee.setName(name);

matrix.getElement(2, 4);

matrix.setElement(2, 4, value);


Общая практика в сообществе разработчиков C++. В Java это соглашение стало более-менее стандартным.

18. Слово compute может быть использовано в методах, вычисляющих что-либо.

valueSet->computeAverage();

matrix->computeInverse()


Дайте читающему сразу понять, что это времязатратная операция.

19. Слово find может быть использовано в методах, осуществляющих какой-либо поиск.

vertex.findNearestVertex();

matrix.findMinElement();


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

20. Слово initialize может быть использовано там, где объект или сущность инициализируется.

printer.initializeFontSet();


Следует отдавать предпочтение американскому варианту initialize, нежели британскому initialise. Следует избегать сокращения init.

Переменным, представляющим GUI, следует давать суффикс, соответствующий имени типа компонента.

mainWindow, propertiesDialog, widthScale, loginText,

leftScrollbar, mainForm, fileMenu, minLabel, exitButton, yesToggle и т. д.


Улучшает читаемость, поскольку имя даёт пользователю прямую подсказку о типе переменной и, следовательно, ресурсах объектов.

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

vector<Point> points;

int values[];


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

23. Префикс n следует использовать для представления числа объектов.

nPoints, nLines


Обозначение взято из математики, где оно является установившимся соглашением для обозначения числа объектов.

24. Суффикс No следует использовать для обозначения номера сущности.

tableNo, employeeNo


Обозначение взято из математики, где оно является установившимся соглашением для обозначения номера сущности.

Другой неплохой альтернативой является префикс i: iTable, iEmployee. Он ясно даёт понять, что перед нами именованный итератор.

25. Переменным-итераторам следует давать именаi, j, kи т. д.

for (int i = 0; i < nTables); i++) {

:

}

for (vector<MyClass>::iterator i = list.begin(); i != list.end(); i++) {

Element element = *i;

...

}


Обозначение взято из математики, где оно является установившимся соглашением для обозначения итераторов.

Переменные с именами j, k и т. д. рекомендуется использовать только во вложенных циклах.

26. Префикс is следует использовать только для булевых (логических) переменных и методов.

isSet, isVisible, isFinished, isFound, isOpen


Общая практика в сообществе разработчиков C++, иногда используемая и в Java.

Использование этого префикса избавляет от таких имён, как status или flag. isStatus или isFlag просто не подходят, и программист вынужден выбирать более осмысленные имена.

В некоторых ситуациях префикс is лучше заменить на другой: has, can или should:

bool hasLicense();

bool canEvaluate();

bool shouldSort();

Симметричные имена должны использоваться для соответствующих операций.

get/set, add/remove, create/destroy, start/stop, insert/delete,

increment/decrement, old/new, begin/end, first/last, up/down, min/max,

next/previous, old/new, open/close, show/hide, suspend/resume, и т. д.


Уменьшайте сложность за счёт симметрии.

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