Статья Автор: Деникина Н.В., Деникин А.В.

Базовое форматирование

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

Это неоднозначное благословение. С одной стороны, приятно иметь свободу делать все, что захочется. С другой стороны, на протяжении многих лет было разработано множество различных методов форматирования программ на C++, и вы можете столкнуться с разногласиями (иногда значительными и отвлекающими) по поводу того, какие из них лучше. Наше основное правило заключается в том, что лучшие стили - это те, которые дают наиболее читабельный код и обеспечивают наибольшую последовательность.

Вот наши рекомендации по базовому форматированию:

1) Для отступов можно использовать либо табуляцию, либо пробелы (в большинстве IDE есть настройка, позволяющая преобразовать нажатие табуляции в соответствующее количество пробелов). Разработчики, предпочитающие пробелы, делают это потому, что они обеспечивают точное выравнивание кода, независимо от того, какой редактор или настройки используются. Сторонники использования табуляции задаются вопросом, почему бы не использовать символ, предназначенный для отступов, для отступов, тем более что вы можете установить ширину в соответствии с вашими личными предпочтениями. Здесь нет правильного ответа - и спорить об этом все равно что спорить о том, что лучше: торт или пирог. В конечном итоге все сводится к личным предпочтениям.

2) Существует два общепринятых стиля функциональных скобок.
Многие разработчики предпочитают размещать открывающую фигурную скобку на той же строке, что и оператор:

int main() {
    // ваш код здесь
}

Обоснованием этого является то, что это уменьшает количество вертикального пробела (поскольку вы не отводите целую строку открывающей фигурной скобке), поэтому вы можете разместить больше кода на экране. Это улучшает понимание кода, поскольку вам не нужно прокручивать так много, чтобы понять, что делает код.

Однако в этой серии уроков мы будем использовать распространенную альтернативу, при которой открывающая фигурная скобка располагается на отдельной строке:

int main()
{
    // ваш код здесь
}

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

3) Каждое выражение в фигурных скобках должно начинаться на одну табуляцию дальше от открывающей фигурной скобки функции, которой оно принадлежит. Например:

int main()
{
    std::cout << "Hello world!\n"; // отступ на одну табуляцию (4 пробела)
    std::cout << "Nice to meet you.\n"; // отступ на одну табуляцию (4 пробела)
}

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

int main()
{
    std::cout << "This is a really, really, really, really, really, really, really, " 
        "really long line\n"; // один дополнительный отступ для строки продолжения
 
    std::cout << "This is another really, really, really, really, really, really, really, "
                 "really long line\n"; // текст, выровненный по предыдущей строке для строки продолжения
 
    std::cout << "This one is short\n";
}

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

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

std::cout << 3 + 4
    + 5 + 6
    * 7 * 8;

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

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


Читать труднее:

cost = 57;
pricePerItem = 24;
value = 5;
numberOfItems = 17;

Полегче читать:

cost          = 57;
pricePerItem  = 24;
value         = 5;
numberOfItems = 17;

Читать труднее:

std::cout << "Hello world!\n"; // cout живет в библиотеке iostream
std::cout << "It is very nice to meet you!\n"; // эти комментарии затрудняют чтение кода
std::cout << "Yeah!\n"; // особенно когда строки разной длины

Легче читать:

std::cout << "Hello world!\n";                  // cout живет в библиотеке iostream
std::cout << "It is very nice to meet you!\n";  // эти комментарии читать легче 
std::cout << "Yeah!\n";                         // особенно когда все выровнены

Сложнее читать:

// cout живет в библиотеке iostream
std::cout << "Hello world!\n";
// эти комментарии затрудняют чтение кода
std::cout << "It is very nice to meet you!\n";
// особенно, когда всё сбито в кучу
std::cout << "Yeah!\n";

Легче читать:

// cout живет в библиотеке iostream
std::cout << "Hello world!\n";
 
// эти комментарии легче читать
std::cout << "It is very nice to meet you!\n";
 
// когда они разделены пробельными символами
std::cout << "Yeah!\n";

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

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

Пропустить Навигационные Ссылки.
Чтобы оставить комментарий нужна авторизация
Печать