📝Пустые строки

Автор: Александр Михновец

РОСКОШЬ ПУСТОЙ СТРОКИ

Компилятору все равно, как написан код. Ему не нужна мудрость в глазах кодера, чтобы всё это понять. Почти В.Цой

using System;namespace other{internal class Program {static void Main(string[]args){int count=3;string birdVoice="cuckoo-cuckoo";for(int i=0;i<count;i++){Console.WriteLine($"{birdVoice}");}}}}

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

Именно поэтому учи английский как native.

Любой дурак может написать код, понятный компьютеру. Хорошие программисты пишут код, понятный людям. Мартин Фаулер (Martin Fowler)

Цели хорошего форматирования

Точно представлять логическую структуру кода

  • Основная теорема форматирования гласит, что хорошее визуальное форматирование показывает логическую структуру кода

Единообразно показывать логическую структуру кода

  • Единый стиль для всего кода

Улучшать читабельность

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

Выдерживать процедуру исправления

  • Лучшие схемы форматирования хорошо переносят модификацию кода. Исправление одной строки не должно приводить к изменению нескольких других.

Способы форматирования

Пробелы, знаки табуляции, переводы строк и пустые строки, — это основное средство для демонстрации структуры программы.

Комбинация Ctrl+K+D автоматически форматирует код в Visual Studio 2019, кроме пустых строк.

Комбинацию горячих клавиш в других версиях Visual Studio ищи в Правка - Дополнительно – Форматировать документ.

Группировка

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

Пустые строки

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

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

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

Общие требования к пустым строкам

Классы отделяем друг от друга пустой строкой.

В классе отделяем пустой строкой следующие блоки:

  • блок полей

  • конструктор

  • блок свойств

  • методы

Если в методе код можно разделить на логические блоки:

блок констант,

• блок переменных,

• блок запроса информации от пользователя,

• блок вывода информации,

• блок for(),

• блок while(),

• блок if(),

• блок switch()

то выделяем эти блоки пустыми строками (даже если в блоке одна строка).

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

  • Пустые строки НЕ ставятся: с прилегающей внутренней стороны фигурных скобок { }.

  • Не должно быть более одной пустой строки подряд

Примеры

  1. Классы при объявлении отделяем друг от друга пустой строкой:

Классы всегда должны быть разделены
  1. Конструктор отделяем пустыми строками сверху от полей, снизу от свойств/методов:

Конструктор это отдельный блок
  1. Свойство при создании отделяем пустой строкой сверху от конструктора, снизу от метода. Если свойство занимает больше одной строки, отделяем с обеих сторон:

Свойства и методы это разные блоки
  1. Методы при создании отделяем друг от друга пустой строкой

Разные методы это разные блоки

5. Если в методе код можно разделить на логические блоки:

  • блок констант,

  • блок переменных,

  • блок запроса информации от пользователя,

  • блок вывода информации,

  • блок for(),

  • блок while(),

  • блок if(),

  • блок switch()

то выделяем эти блоки пустыми строками (даже если в блоке одна строка)

  • 5.1 Блок констант отделяем пустой от блока переменных

Константы и переменные это разные блоки
  • 5.2 Блок переменных отделяем пустой строкой от блока запроса информации у пользователя

Переменные и запрос информации это разные блоки
  • 5.3 Блок вывода информации отделяем пустой от блока запроса информации

Вывод информации и ее запрос это разные блоки
  • 5.4 Блок for() отделяем пустой строкой от остального кода

for() это отдельный логический блок
  • 5.5 Блок while() отделяем пустой строкой от остального кода

while() это отдельный логический блок
  • 5.6 Блок if() отделяем пустой строкой от остального кода

if() это отдельный логический блок
  • 5.7 Блок switch() отделяем пустой строкой от остального кода

switch() это отдельный логический блок
  • 5.8 Внутри switch() пустые строк На примере case и break приведены в одну строчку, но так код писать не надо – это просто пример, показывающий, что case и break – одно целое. Т.о. если рассматривать case и break как одно целое, то блоки case надо отделять друг от друга пустой строкой

break - разделитель или часть case?

Есть мнение, что вышележащий break отделяется от нижележащего case горизонтальным сдвигом и это компенсирует отсутствие пустой разделительной строки:

Пустая строка - разделитель

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

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

  • 6.1 Блок переменные разделен на логические блоки по однотипным данным или логическим группам:

Разные типы данных можно считать разным логическими блоками
  • 6.2 Блок запроса информации разделен на логические блоки:

Визуально заметны разные смысловые блоки
  • 6.3 Очень важно отделять несвязанные выражения друг от друга

Разные действия - разные логические блоки
  1. Пустые строки НЕ ставятся:

  • 7.1 С прилегающей внутренней стороны фигурных скобок { }

Открываем фигурную скобку { - продолжаем без пустой строки, закрываем фигурную скобку } – перед ней не должно быть пустых строк
  • 7.2 Не должно быть 2 и более пустых строк подряд

2 пустые строки - пустая трата места

Эта схема проста.

И больше нет ничего,

Все находится в нас

В. Цой

Источники:

  • Стив Макконнелл. Совершенный Код, 2010

  • Виктор Цой. Мы ждем перемен, 1986

  • Опыт нажитый непосильным трудом

  • Чувство прекрасного

Last updated

Was this helpful?