База знаний ЯЮниор
  • C#
    • 🗃️Ссылочные и значимые типы в C# Ключевые слова ref, out, in Что нужно знать новичку
    • 📋Использование констант
    • 🔖Snippet или фрагмент кода
    • 📝Пустые строки
    • 🛡️Инкапсуляция
  • Unity
    • 🚶‍♂️Управление Параметрами Аниматора
    • ⚙️Динамическое изменение объектов
      • 🛠️Создание объектов
      • 🪛Изменение объектов
      • 🪚Добавление и изменение компонентов
      • 🔥Удаление объектов и компонентов
    • 🔊События
      • 🧬Параметризация
      • 🔗Совмещение событий
      • 📡Action и UnityAction
      • 🕹️UnityEvent
    • 🔌Подключение среды разработки к Unity
    • ⌚Корутины
      • 🪄Управление корутинами
      • ⏰Yield Instruction
      • 🕵️‍♂️Как устроены корутины?
  • Git и GitHub
    • 🗃️Git
    • 🗄️GitHub
    • 🖥️GitHub Desktop
Powered by GitBook
On this page
  • РОСКОШЬ ПУСТОЙ СТРОКИ
  • Цели хорошего форматирования
  • Точно представлять логическую структуру кода
  • Единообразно показывать логическую структуру кода
  • Улучшать читабельность
  • Выдерживать процедуру исправления
  • Способы форматирования
  • Группировка
  • Пустые строки
  • Общие требования к пустым строкам
  • Примеры
  • Источники:

Was this helpful?

  1. C#

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

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

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

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

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() отделяем пустой строкой от остального кода

  • 5.5 Блок while() отделяем пустой строкой от остального кода

  • 5.6 Блок if() отделяем пустой строкой от остального кода

  • 5.7 Блок switch() отделяем пустой строкой от остального кода

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

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

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

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

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

  • 6.2 Блок запроса информации разделен на логические блоки:

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

  1. Пустые строки НЕ ставятся:

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

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

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

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

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

В. Цой

Источники:

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

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

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

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

PreviousSnippet или фрагмент кодаNextИнкапсуляция

Last updated 1 year ago

Was this helpful?

📝
Классы всегда должны быть разделены
Конструктор это отдельный блок
Свойства и методы это разные блоки
Разные методы это разные блоки
Константы и переменные это разные блоки
Переменные и запрос информации это разные блоки
Вывод информации и ее запрос это разные блоки
for() это отдельный логический блок
while() это отдельный логический блок
if() это отдельный логический блок
switch() это отдельный логический блок
break - разделитель или часть case?
Пустая строка - разделитель
break - разделитель
Разные типы данных можно считать разным логическими блоками
Визуально заметны разные смысловые блоки
Разные действия - разные логические блоки
Открываем фигурную скобку { - продолжаем без пустой строки, закрываем фигурную скобку } – перед ней не должно быть пустых строк
2 пустые строки - пустая трата места