Добавить в корзинуПозвонить
Найти в Дзене
Road to the programming

Урок №18. Базовое форматирование кода

Пробелы относятся к символам, которые используются в форматировании кода, вместе с символами табуляции и, иногда, разрывом строки. Компилятор, как правило, игнорирует пробелы, но все же есть небольшие исключения.
В следующем примере все строки кода выполняют одно и то же:
std :: cout << "Hello, world!" ;
std :: cout << "Hello, world!" ;

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

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

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++ позволяет выбрать вам тот стиль форматирования вашего кода, в котором вам будет наиболее комфортно работать.