Пробелы относятся к символам, которые используются в форматировании кода, вместе с символами табуляции и, иногда, разрывом строки. Компилятор, как правило, игнорирует пробелы, но все же есть небольшие исключения.
В следующем примере все строки кода выполняют одно и то же:
std :: cout << "Hello, world!" ;
std :: cout << "Hello, world!" ;
std :: cout << "Hello, world!" ;
std :: cout
<< "Hello, world!" ;
Даже последний стейтмент с разрывом строки успешно скомпилируется.
Аналогично:
int add ( int x , int y ) { return x + y ; }
int add ( int x , int y ) {
return x + y ; }
int add ( int x , int y )
{ return x + y ; }
int add ( int x , int y )
{
return x + y ;
}
Исключением, где компилятор учитывает пробелы, является цитируемый текст, например: "Hello, world!" .
"Hello, world!"
отличается от
"Hello, world!"
Разрыв/перевод строки не допускается в цитируемом тексте:
std :: cout << "Hello,
world!" << std :: endl ; // Не допускается!
Еще одним исключением, где компилятор обращает внимание на пробелы, являются однострочные комментарии : они занимают только одну строку. Перенос однострочного комментария на вторую строку вызовет ошибку компиляции, например:
std :: cout << "Hello, world!" << std :: endl ; // это однострочный комментарий
А это уже не комментарий
Основные рекомендации
В отличие от других языков программирования, C++ не имеет каких-либо ограничений в форматировании кода со стороны программистов. Основное правило заключается в том, чтобы использовать только те способы, которые максимально улучшают читабельность и логичность кода.
Вот 6 основных рекомендаций :
Рекомендация №1 : Вместо символа табуляции (клавиша «Tab») используйте 4 пробела . В некоторых IDE по умолчанию используются три пробела в качестве одного символа табуляции — это тоже нормально (количество пробелов можно легко настроить в соответствующих пунктах меню вашей IDE).
Причиной использования пробелов вместо символов табуляции является то, что если вы откроете свой код в другом редакторе, то он сохранит правильные отступы, в отличие от использования символов табуляции.
Рекомендация №2: Открытие и закрытие фигурных скобок функции должно находиться на одном уровне на отдельных строках :
int main ( )
{
}
Хотя есть еще и следующий вариант (вы также можете его использовать):
int main ( ) {
//...
}
Первый вариант хорош тем, что в случае возникновения ошибки несоответствия скобок, найти те самые проблемные скобки визуально будет проще.
Рекомендация №3: Каждый стейтмент функции должен быть с соответствующим отступом (клавиша Tab или 4 пробела):
int main ( )
{
std :: cout << "Hello world!" << std :: endl ; // один Tab (4 пробела)
std :: cout << "Nice to meet you." << std :: endl ; // один Tab(4 пробела)
}
Рекомендация №4: Строки не должны быть слишком длинными . 72, 78 или 80 символов — это оптимальный максимум строки. Если она будет длиннее, то её следует разбить на несколько отдельных строк:
int main ( )
{
std :: cout << "This is a really, really, really, really, really, really, really, " <<
"really long line" << std :: endl ; // один дополнительный отступ для строки-продолжения
std :: cout << "This is another really, really, really, really, really, really, really, " <<
"really long line" << std :: endl ; // отступ + выравнивание с учетом главной строки
std :: cout << "This one is short" << std :: endl ;
}
Рекомендация №5: Если длинная строка разбита на части с помощью определенного оператора (например, << или +), то этот оператор должен находиться в конце этой же строки, а не в начале следующей (так читабельнее).
Правильно:
std :: cout << "This is a really, really, really, really, really, really, really, " <<
"really long line" << std :: endl ;
Неправильно:
std :: cout << "This is a really, really, really, really, really, really, really, "
<< "really long line" << std :: endl ;
Рекомендация №6: Используйте пробелы и пропуски строк между стейтментами для улучшения читабельности вашего кода .
Менее читабельно:
nCost = 57 ;
nPricePerItem = 24 ;
nValue = 5 ;
nNumberOfItems = 17 ;
Более читабельно:
nCost = 57 ;
nPricePerItem = 24 ;
nValue = 5 ;
nNumberOfItems = 17 ;
Менее читабельно:
std :: cout << "Hello world!" << std :: endl ; // cout и endl находятся в библиотеке iostream
std :: cout << "It is very nice to meet you!" << std :: endl ; // эти комментарии ухудшают читабельность кода
std :: cout << "Yeah!" << std :: endl ; // особенно, когда строки разной длины
Более читабельно:
std :: cout << "Hello world!" << std :: endl ; // cout и endl находятся в библиотеке iostream
std :: cout << "It is very nice to meet you!" << std :: endl ; // эти комментарии более читабельны
std :: cout << "Yeah!" << std :: endl ; // не так ли?
Менее читабельно:
// cout и endl находятся в библиотеке iostream
std :: cout << "Hello world!" << std :: endl ;
// эти комментарии ухудшают читабельность кода
std :: cout << "It is very nice to meet you!" << std :: endl ;
// особенно, когда они в одной куче
std :: cout << "Yeah!" << std :: endl ;
Более читабельно:
// cout и endl находятся в библиотеке iostream
std :: cout << "Hello world!" << std :: endl ;
// эти комментарии читать легче
std :: cout << "It is very nice to meet you!" << std :: endl ;
// ведь они разделены дополнительными строками
std :: cout << "Yeah!" << std :: endl ;
Язык C++ позволяет выбрать вам тот стиль форматирования вашего кода, в котором вам будет наиболее комфортно работать.