Пустые строки
Автор: Александр Михновец
РОСКОШЬ ПУСТОЙ СТРОКИ
Компилятору все равно, как написан код. Ему не нужна мудрость в глазах кодера, чтобы всё это понять. Почти В.Цой
Код будет написан один раз, но его будут читать неоднократно: Ты сам, Ревьюер, Тот кто придёт после тебя, и конечно Спец агент Смит, ища русский след и занося в картотеку стилистику написания кода, как отпечатки пальцев программиста.
Именно поэтому учи английский как native.
Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям. Мартин Фаулер (Martin Fowler)
Цели хорошего форматирования
Точно представлять логическую структуру кода
Основная теорема форматирования гласит, что хорошее визуальное форматирование показывает логическую структуру кода
Единообразно показывать логическую структуру кода
Единый стиль для всего кода
Улучшать читабельность
Схема форматирования, использующая пробелы и разделители только там, где они требуются компилятору, логична, но читать такой код невозможно. Хорошая структура форматирования упрощает чтение, восприятия и понимания кода
Выдерживать процедуру исправления
Лучшие схемы форматирования хорошо переносят модификацию кода. Исправление одной строки не должно приводить к изменению нескольких других.
Способы форматирования
Пробелы, знаки табуляции, переводы строк и пустые строки, — это основное средство для демонстрации структуры программы.
Комбинация Ctrl+K+D
автоматически форматирует код в Visual Studio 2019
, кроме пустых строк.
Комбинацию горячих клавиш в других версиях Visual Studio
ищи в Правка - Дополнительно – Форматировать документ.
Группировка
В литературе мысли группируются в абзацы. Хорошо написанный абзац содержит предложения, относящиеся только к определенной идее. Он не должен содержать посторонних предложений. Точно так же абзац кода должен содержать только взаимосвязанные операторы, выполняющие одно задание.
Пустые строки
Кроме необходимости группировать взаимосвязанные операторы, очень важно отделять несвязанные выражения друг от друга.
Начало нового абзаца в книге обозначается отступом или пустой строкой. Начало нового абзаца в коде нужно указывать с помощью пустой строки.
Пустые строки позволяют продемонстрировать организацию программы. Вы можете использовать их для деления групп взаимосвязанных операторов на абзацы, отделения методов друг от друга.
Общие требования к пустым строкам
Классы отделяем друг от друга пустой строкой.
В классе отделяем пустой строкой следующие блоки:
блок полей
конструктор
блок свойств
методы
Если в методе код можно разделить на логические блоки:
• блок констант,
• блок переменных,
• блок запроса информации от пользователя,
• блок вывода информации,
• блок for()
,
• блок while()
,
• блок if()
,
• блок switch()
то выделяем эти блоки пустыми строками (даже если в блоке одна строка).
Внутри каждого логического блока также можно делать разбивку на дополнительные блоки, если это выделит взаимосвязанные группы или улучшит восприятие и читаемость кода.
Пустые строки НЕ ставятся: с прилегающей внутренней стороны фигурных скобок { }.
Не должно быть более одной пустой строки подряд
Примеры
Классы при объявлении отделяем друг от друга пустой строкой:
Конструктор отделяем пустыми строками сверху от полей, снизу от свойств/методов:
Свойство при создании отделяем пустой строкой сверху от конструктора, снизу от метода. Если свойство занимает больше одной строки, отделяем с обеих сторон:
Методы при создании отделяем друг от друга пустой строкой
5. Если в методе код можно разделить на логические блоки:
блок констант,
блок переменных,
блок запроса информации от пользователя,
блок вывода информации,
блок
for()
,блок
while()
,блок
if()
,блок
switch()
то выделяем эти блоки пустыми строками (даже если в блоке одна строка)
5.1 Блок констант отделяем пустой от блока переменных
5.2 Блок переменных отделяем пустой строкой от блока запроса информации у пользователя
5.3 Блок вывода информации отделяем пустой от блока запроса информации
5.4 Блок
for()
отделяем пустой строкой от остального кода
5.5 Блок
while()
отделяем пустой строкой от остального кода
5.6 Блок
if()
отделяем пустой строкой от остального кода
5.7 Блок
switch()
отделяем пустой строкой от остального кода
5.8 Внутри
switch()
пустые строк На примере case и break приведены в одну строчку, но так код писать не надо – это просто пример, показывающий, чтоcase
иbreak
– одно целое. Т.о. если рассматриватьcase
иbreak
как одно целое, то блокиcase
надо отделять друг от друга пустой строкой
Есть мнение, что вышележащий break отделяется от нижележащего case горизонтальным сдвигом и это компенсирует отсутствие пустой разделительной строки:
Однако это не улучшает визуальное восприятие кода, и мы рекомендуем придерживаться одного стиля во всем коде
Логические блоки. Внутри каждого логического блока также можно делать разбивку на дополнительные блоки, если это выделит взаимосвязанные группы или улучшит восприятие и читаемость кода.
6.1 Блок переменные разделен на логические блоки по однотипным данным или логическим группам:
6.2 Блок запроса информации разделен на логические блоки:
6.3 Очень важно отделять несвязанные выражения друг от друга
Пустые строки НЕ ставятся:
7.1 С прилегающей внутренней стороны фигурных скобок { }
7.2 Не должно быть 2 и более пустых строк подряд
Эта схема проста.
И больше нет ничего,
Все находится в нас
В. Цой
Источники:
Стив Макконнелл. Совершенный Код, 2010
Виктор Цой. Мы ждем перемен, 1986
Опыт нажитый непосильным трудом
Чувство прекрасного
Last updated
Was this helpful?