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

  Юрий  | 

    | 

  Обновл. 5 Мар 2019  | 

 15712

 ǀ   16 

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

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

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

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

"Hello, world!"

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

"Hello,     world!"

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

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

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

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

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

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

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

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

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

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

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

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

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

Правильно:

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

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

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

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

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

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

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

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

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


Оценить статью:

Звёзд: 1Звёзд: 2Звёзд: 3Звёзд: 4Звёзд: 5 (301 оценок, среднее: 4,93 из 5)
Загрузка...

Комментариев: 16

  1. Аватар Александр:

    Спасибо Юрий! Всё понятно и просто. За ваши труды вам воздастся!

    1. Юрий Юрий:

      Пожалуйста 🙂

  2. Аватар Максим:

    Автор в этой статье начал молча использовать using namespace std, не предупредив, не объяснив что это и для чего, и в дальнейшем без объяснения причин и как это работает продолжает использовать.

    Не красиво, совсем.

      1. Аватар Максим:

        Смысла в этом исправлении особого не вижу. Пролистав два урока дальше — я вижу тоже самое, молчаливый переход на using namespace std без объяснения причин, даже не обращая внимание на это.
        Я так бросил уроков 10, потому что неожиданно в тексте появляется функции, которые раьше не использовались, и что это, и для чего они — не объясняется.

        1. Юрий Юрий:

          Читайте уроки №24 и №54. В них всё детально рассказывается.

        2. Аватар Максим:

          То есть, я сейчас должен бросать урок 20 и перепрыгивать на 54, чтобы понять урок 20?
          Кажется, это звучит глупо.

        3. Юрий Юрий:

          Вы название урока прочитали? Повторю, если не удосужились — "Урок 18. Whitespace и базовое форматирование". Вам это о чём-либо говорит? В этом уроке рассказывается о whitespaces и базовом форматировании. Здесь не рассказывается о пространствах имён или о стейтментах using.

          Для объяснения материала о WHITESPACES И БАЗОВОМ ФОРМАТИРОВАНИИ прилагаются примеры в коде для лучшего усваивания материала. В примерах кода используются параметры, пространство имён std, операторы << и return. О них в этом уроке тоже ничего не сообщается. Как думаете, почему? Правильно, потому что это урок о whitespaces и базовом форматировании. На каждую тему — отдельный урок. Если тема какого-либо объекта сейчас не раскрывается, значит на данном этапе это не нужно. Дойдёте до соответствующего урока — прочитаете и узнаете.

          О том, что вы должны. Вы ничего мне не должны. Вы можете закрыть этот сайт и забыть его, как самый страшный сон. Если вас не удовлетворяет структура или логика этих уроков — пожалуйста, нажимаете на крестик возле вкладки в верху браузера. Теперь, надеюсь, понятно объяснил?

  3. Аватар илья:

    простите, всё что вы обьясняете, относится только к консольным приложениям?

    1. Юрий Юрий:

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

      1. Аватар илья:

        спасибо,я не знал!

  4. Аватар Дима:

    Терпень не могу такой стиль:

    Он мне кажется каким-то неаккуратным.
    Мне куда больше нравится такой способ:

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

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

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

    Хотя это все конечно дело вкуса)

    1. Юрий Юрий:

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

      1. Аватар Серж:

        По вашей ссылке , если внимательно почитать ,есть еще одна ссылка на https://en.wikipedia.org/wiki/Indentation_style#Variant:_Stroustrup. И вот там очень подробно описываются различные стили. Многие из них (Allman, GNU, Whitesmiths, Horstmann) придерживаются именно такого стиля как в этой статье. Мне это тоже кажется удобнее. Да и при программировании микроконтроллеров используется этот же стиль. Для примера http://narodstream.ru/avr-urok-3-pishem-kod-na-si-zazhigaem-svetodi/

        1. Аватар Мгер:

          только у МК обычно язык С, а не С++.

Добавить комментарий

Ваш E-mail не будет опубликован. Обязательные поля помечены *