Возвращаемый функцией тип может располагаться над именем самой функции

void

MyClass::myMethod(void)

{

:

}


Так функции выровнены в одну колонку.

6.2


84.

— Операторы следует отбивать пробелами.
— После зарезервированных ключевых слов языка C++ следует ставить пробел.
— После запятых следует ставить пробелы.
— Двоеточия следует отбивать пробелами.
— После точек с запятой в цикле for следует ставить пробелы.

a = (b + c) * d; // НЕ РЕКОМЕНДУЕТСЯ: a=(b+c)*d

 

while (true) // НЕ РЕКОМЕНДУЕТСЯ: while(true)

{

...

 

doSomething(a, b, c, d); // НЕ РЕКОМЕНДУЕТСЯ: doSomething(a,b,c,d);

 

case 100 : // НЕ РЕКОМЕНДУЕТСЯ: case 100:

 

for (i = 0; i < 10; i++) { // НЕ РЕКОМЕНДУЕТСЯ: for(i=0;i<10;i++){

...


Выделяет отдельные части выражений. Улучшает читаемость. Сложно дать всеобъемлющий набор рекомендаций относительно пробелов в языке C++. Рекомендации выше должны показать общие принципы.

85. После имён методов может идти пробел, если далее следует другое имя.

doSomething (currentFile);


Выделяет отдельные имена. Улучшает читаемость. Если далее нет никакого имени, пробел можно опускать (doSomething()).

Другим подходом является указание пробела сразу после открывающей скобки. Использующие его также обычно ставят пробел и перед закрывающей скобкой: doSomething( currentFile );. Это позволяет выделять отдельные имена; пробел перед закрывающей скобкой выглядит неестественно, но без него выражение выглядит несимметрично (doSomething( currentFile);).

Логические блоки в коде следует отделять пустой строкой.

Matrix4x4 matrix = new Matrix4x4();

 

double cosAngle = Math.cos(angle);

double sinAngle = Math.sin(angle);

 

matrix.setElement(1, 1, cosAngle);

matrix.setElement(1, 2, sinAngle);

matrix.setElement(2, 1, -sinAngle);

matrix.setElement(2, 2, cosAngle);

 

multiply(matrix);


Улучшает читаемость.

Методы рекомендуется отделять тремя пустыми строками.

Это позволяет лучше их выделять.

Переменные в объявлениях можно выравнивать.

AsciiFile* file;

int nPoints;

float x, y;


Улучшает читаемость. Чётче видны пары тип — переменная.

Используйте выравнивание везде, где это улучшает читаемость.

if (a == lowValue) compueSomething();

else if (a == mediumValue) computeSomethingElse();

else if (a == highValue) computeSomethingElseYet();

 

value = (potential * oilDensity) / constant1 +

(depth * waterDensity) / constant2 +

(zCoordinateValue * gasDensity) / constant3;

 

minPosition = computeDistance(min, x, y, z);

averagePosition = computeDistance(average, x, y, z);

 

switch (value) {

case PHASE_OIL : strcpy(phase, "Oil"); break;

case PHASE_WATER : strcpy(phase, "Water"); break;

case PHASE_GAS : strcpy(phase, "Gas"); break;

}


Есть множество случаев, когда код можно дополнительно выравнивать, даже если это нарушает установленные ранее правила.

6.3


90. Сложный код, написанный с использованием хитрых ходов, следует не комментировать, а переписывать!

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

Все комментарии следует писать на английском.

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

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

// Комментарий, расположенный

// на нескольких строках.


Если следовать этой рекомендации, многострочные комментарии /* */ можно использовать для отладки и иных целей.

После // следует ставить пробел, а сам комментарий следует начинать писать с большой буквы завершать точкой.

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

while (true) { // НЕ РЕКОМЕНДУЕТСЯ: while (true) {

// Do something // Do something

something(); something();

} }


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