У функций нужно обязательно указывать тип возвращаемого значения

int getValue() // НЕЛЬЗЯ: getValue()

{

:

}


Если это не указано явно, C++ считает, что возвращаемое значение имеет тип int. Никогда нельзя полагаться на это, поскольку такой способ может смутить программистов, не знакомых с ним.

69. Не следует использоватьgoto.

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

70. Следует использовать «0» вместо «NULL».

NULL является частью стандартной библиотеки C и устарело в C++.

 

6.1


71. Основной отступ следует делать в два пробела.

for (i = 0; i < nElements; i++)

a[i] = 0;


Отступ в один пробел достаточно мал, чтобы отражать логическую структуру кода. Отступ более 4 пробелов делает глубоко вложенный код нечитаемым и увеличивает вероятность того, что строки придётся разбивать. Широко распространены варианты в 2, 3 или 4 пробела; причём 2 и 4 — более широко.

Блоки кода следует оформлять так, как показано в примере 1 (рекомендуется) или в примере 2, но ни в коем случае не так, как показано в примере 3. Оформление функций и классов должно следовать примеру 2.

while (!done) {

doSomething();

done = moreToDo();

}

 

while (!done)

{

doSomething();

done = moreToDo();

}

 

while (!done)

{

doSomething();

done = moreToDo();

}


Пример 3 использует лишние отступы, что мешает ясному отображению логической структуры кода.

73. Объявления классов следует оформлять следующим образом:

class SomeClass : public BaseClass

{

public:

...

 

protected:

...

 

private:

...

}


Частное следствие из правила, указанного выше.

74. Определения методов следует оформлять следующим образом:

void someMethod()

{

...

}


Следствие из правила, указанного выше.

75. Конструкциюif-else следует оформлять следующим образом:

if (condition) {

statements;

}

 

if (condition) {

statements;

}

else {

statements;

}

 

if (condition) {

statements;

}

else if (condition) {

statements;

}

else {

statements;

}


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

if (condition) {

statements;

} else {

statements;

}


Лучше каждую часть if-else помещать на отдельной строке. Это упрощает действия с кодом, например, перемещение блока else.

76. Циклfor следует оформлять следующим образом:

for (initialization; condition; update) {

statements;

}


Следствие из правила, указанного выше.

77. Циклfor с пустым телом следует оформлять следующим образом:

for (initialization; condition; update)

;


Делает акцент для читающего на том, что тело пусто. Однако циклов, не имеющих тела, следует избегать.

78. Циклwhile следует оформлять следующим образом:

while (condition) {

statements;

}


Следствие из правила, указанного выше.

79. Циклdo-while следует оформлять следующим образом:

do {

statements;

} while (condition);


Следствие из правила, указанного выше.

80. Конструкциюswitch следует оформлять следующим образом:

switch (condition) {

case ABC :

statements;

// Отсутствует "break"

 

case DEF :

statements;

break;

 

case XYZ :

statements;

break;

 

default :

statements;

break;

}


Обратите внимание, что каждое слово case имеет отступ относительно всей конструкции, что помогает её выделить. Также обратите внимание на пробелы перед двоеточиями. Если где-то отсутствует ключевое слово break, то предупреждением об этом должен служить комментарий. Программисты часто забывают ставить это слово, поэтому случай нарочного его пропуска должен описываться специально.

81. Конструкциюtry-catch следует оформлять следующим образом:

try {

statements;

}

catch (Exception& exception) {

statements;

}


Следствие из правила, указанного выше. Вопросы, касающиеся закрывающих фигурных скобок у конструкции if-else, применимы и здесь.

82. Если конструкцияif-else содержит только одно выражение в теле, фигурные скобки можно опускать.

if (condition)

statement;

 

while (condition)

statement;

 

for (initialization; condition; update)

statement;


Рекомендуется всё же не опускать фигурные скобки.