11. Базовое форматирование кода
2019-04-09, 2:40 PM

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

В следующем примере все строчки кода выполняют одно и то же:

1  std::cout << "Hello, world!";

2

3  std::cout               <<            "Hello, world!";

4

5  std::cout << "Hello, world!";

6

7  std::cout
8    << "Hello, world!";

Даже последний стейтмент с разрывом строки успешно скомпилируется. Аналогично работает следующее:

1  int add(int x, int y) { return x + y; }

2

3  int add(int x, int y) {
4    return x + y; }

5

6  int add(int x, int y)
7  {    return x + y; }

8

9  int add(int x, int y)
10  {
11    return x + y;
12  }

Исключением, где компилятор учитывает пробелы, является цитируемый текст, например: "Hello, world!".

"Hello, world!"

отличается от

"Hello,     world!"

Разрыв/перевод строки не допускается в цитируемом тексте:

1  std::cout << "Hello,
2    world!" << std::endl; // Не допускается!

Ещё одним исключением, где компилятор обращает внимание на пробелы, являются однострочные комментарии: они занимают только одну строку. Следующее вызовет ошибку компиляции:

1  std::cout << "Hello, world!" << std::endl; // это однострочный комментарий
2  А это уже не комментарий

Основные рекомендации

В отличие от других языков, C++ не имеет каких-либо ограничений в форматировании кода со стороны программистов. Основное правило заключается лишь в том, чтобы использовать только те способы, которые максимально улучшают читабельность и логичность кода.

Вот 6 основных рекомендаций:

1. Вместо клавиши Tab используйте 4 пробела. В некоторых IDE по умолчанию стоят тройные пробелы в качестве одного Tab — это тоже нормально (количество пробелов можно легко настроить в соответствующих пунктах меню вашей IDE).

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

2. Открытие и закрытие фигурных скобок функции должно находиться на одном уровне на отдельных строках:

1  int main()
2  {
3  }

Хотя есть ещё вариант (вы также можете его использовать):

1  int main() {
2    //...
3  }

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

3. Каждый стейтмент функции должен быть с соответствующим отступом (Tab или 4 пробела):

1  int main()
2  {
3    std::cout << "Hello world!" << std::endl; // один таб (4 пробела)
4    std::cout << "Nice to meet you." << std::endl; // один таб (4 пробела)
5  }

4. Строки не должны быть слишком длинными. 72, 78 или 80 символов – это оптимальный максимум строки. Если она будет длиннее, то её следует разбить на несколько отдельных строчек:

1  int main()
2  {
3    std::cout << "This is a really, really, really, really, really, really, really, " <<
4        "really long line" << std::endl; // один дополнительный отступ для строки-продолжения

5

6    std::cout << "This is another really, really, really, really, really, really, really, " <<
7            "really long line" << std::endl; // отступ + выравнивание с учётом главной строки

8

9    std::cout << "This one is short" << std::endl;
10  }

5. Если длинная строка разбита на части с помощью определённого оператора (например, << или +), то этот оператор должен находится в конце этой же строки, а не в начале следующей. Так читабельнее.

Правильно:

1  std::cout << "This is a really, really, really, really, really, really, really, " <<
2        "really long line" << std::endl;

Неправильно:

1  std::cout << "This is a really, really, really, really, really, really, really, "
2       << "really long line" << std::endl;

6. Используйте пробелы для улучшения читабельности вашего кода.

Менее читабельно:

nCost = 57;
nPricePerItem = 24;
nValue = 5;
nNumberOfItems = 17;

Более читабельно:

nCost                   = 57;
nPricePerItem      = 24;
nValue                  = 5;
nNumberOfItems = 17;

Менее читабельно:

1  std::cout << "Hello world!" << std::endl; // cout и endl находятся в библиотеке iostream
2  std::cout << "It is very nice to meet you!" << std::endl; // эти комментарии ухудшают читабельность кода
3  std::cout << "Yeah!" << std::endl; // особенно, когда строки разной длины

Более читабельно:

1  std::cout << "Hello world!" << std::endl;                  // cout и endl находятся в библиотеке iostream
2  std::cout << "It is very nice to meet you!" << std::endl;  // эти комментарии более читабельны
3  std::cout << "Yeah!" << std::endl;                         // не так ли?

Менее читабельно:

1  // cout и endl находятся в библиотеке iostream
2  std::cout << "Hello world!" << std::endl;
3  // эти комментарии ухудшают читабельность кода
4  std::cout << "It is very nice to meet you!" << std::endl;
5  // особенно, когда они в одной куче
6  std::cout << "Yeah!" << std::endl;

Более читабельно:

1  // cout и endl находятся в библиотеке iostream
2  std::cout << "Hello world!" << std::endl;

3

4  // эти комментарии читать легче
5  std::cout << "It is very nice to meet you!" << std::endl;

6

7  // ведь они разделены дополнительными строками
8  std::cout << "Yeah!" << std::endl;

C++ позволяет выбрать вам тот стиль форматирования вашего кода, в котором вам будет наиболее комфортно работать.

Категория: C++ теория | Добавил: shadrinuro
Просмотров: 236 | Загрузок: 0 | Рейтинг: 0.0/0
Всего комментариев: 0
avatar