Hero background image
Лучшие практики форматирования для сценариев на C# в Unity

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

Примечание: Рекомендации, представленные здесь, основаны на рекомендациях, предоставленных компанией Microsoft. Лучшие правила руководства по стилю кода - это те, которые работают для нужд вашей команды.

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

Форматирование вашего кода

Наряду с именованием, форматирование помогает сократить количество догадок и повысить ясность кода. Следуя стандартному руководству по стилю, обзоры кода становятся не столько о том, как выглядит код, сколько о том, что он делает.

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

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

Давайте рассмотрим некоторые рекомендации по форматированию.

Свойства

Свойство предоставляет гибкий механизм для чтения, записи или вычисления значений класса. Свойства ведут себя так, как будто они являются общедоступными переменными-членами, но на самом деле это специальные методы, называемые аксессоры.

Каждое свойство имеет метод get и set для доступа к частному полю, называемому базовое поле. Таким образом, свойство инкапсулирует данные, скрывая их от нежелательных изменений со стороны пользователя или внешних объектов. У каждого "getter" и "setter" есть свой модификатор доступа, позволяющий вашему свойству быть доступным только для чтения, записи или чтения.

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

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

Экспрессивно-телесные свойства

Используйте свойства, содержащие выражения, для однострочных свойств, доступных только для чтения (=>): Возвращает частное поле подложки.

Автореализуемое свойство

Во всем остальном используется синтаксис выражения { get; set; }: Если вы хотите просто открыть публичное свойство, не указывая базовое поле, используйте автореализованное свойство.

Примените синтаксис, основанный на выражениях, для аксессоров set и get. Не забудьте сделать "сеттер" приватным, если вы не хотите предоставлять доступ на запись. Для многострочных блоков кода выровняйте закрывающую и открывающую скобки.

Сериализуемый класс
СЕРИАЛИЗУЕМЫЙ КЛАСС ИЛИ STRUCT МОЖЕТ ПОМОЧЬ ОРГАНИЗОВАТЬ ИНСПЕКТОР.
Сериализация

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

Сериализованные поля появляются в Инспекторе, но вы не можете сериализовать статические, константные или доступные только для чтения поля. Они должны быть либо общедоступными, либо помеченными атрибутом [SerializeField]. Unity сериализует только определенные типы полей, поэтому полный набор правил сериализации см. в документации.

При работе с сериализованными полями соблюдайте следующие основные правила:

Используйте атрибут [SerializeField]: Атрибут SerializeField может работать с приватными или защищенными переменными, чтобы они отображались в инспекторе. Это инкапсулирует данные лучше, чем обозначение переменной как public, и не позволяет внешнему объекту переписать ее значения.

Используйте атрибут Range, чтобы задать минимальное и максимальное значения: Атрибут [Range(min, max)] удобен, если вы хотите ограничить числовые значения, которые пользователь может присвоить числовому полю. Кроме того, в Инспекторе поле удобно представлено в виде ползунка.

Группируйте данные в сериализуемые классы или структуры, чтобы навести порядок в Inspector: Определите публичный класс или структуру и пометьте его атрибутом [Serializable]. Определите публичные переменные для каждого типа, который вы хотите отобразить в инспекторе.

Ссылайтесь на этот сериализуемый класс из другого класса. Полученные переменные появляются в Инспекторе в виде сворачивающихся блоков.

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

В C# существует два распространенных стиля отступов:

Стиль Allman, также известный как стиль BSD (от BSD Unix), помещает открывающие фигурные скобки на новую строку.

Стиль K&R, или "стиль одной истинной скобы", позволяет расположить открывающую скобу на одной линии с предыдущим коллектором.

Существуют также вариации этих стилей отступов. В примерах, приведенных в этом руководстве, используется стиль Allman из руководства по проектированию фреймворков Microsoft. Независимо от того, какой вариант вы выберете в качестве команды, убедитесь, что все придерживаются одинакового стиля отступов и скобок. Вы также можете воспользоваться советами, приведенными в следующих разделах.

Табулатуры C Sharp
НАСТРОЙКИ ВКЛАДОК В VISUAL STUDIO ДЛЯ WINDOWS
Примите решение о равномерном вдавливании

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

В Visual Studio для Windows перейдите в меню Инструменты > Параметры > Текстовый редактор > C# > Вкладки.

В Visual Studio for Mac перейдите в меню Preferences > Source Code > C# Source Code. Выберите стиль текста, чтобы настроить параметры.

Примечание: Visual Studio предоставляет возможность преобразования табуляций в пробелы.

Не опускайте скобки

Не опускайте скобки - даже для однострочных утверждений. Скобки повышают согласованность, что облегчает чтение и сопровождение кода. В этом примере скобки четко отделяют действие DoSomething от цикла.

Если позже вам понадобится добавить строку Debug или запустить DoSomethingElse, скобки уже будут на месте. Если сохранить клаузулу на отдельной строке, можно просто добавить точку останова.

Сохраняйте скобки для ясности в многострочных высказываниях

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

Стандартизация утверждений о переключателях

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

Вот один из примеров отступов операторов case.

Горизонтальное расстояние

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

Добавить места

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

Пробел после запятой

Между аргументами функций используйте одинарный пробел после запятой.

Отсутствие интервала после скобок

Не добавляйте пробел после скобок и аргументов функции.

Отсутствие пробела между функцией и скобками

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

Избегайте пробелов внутри скобок

По возможности избегайте пробелов внутри скобок.

Расстояние до условий регулирования потока

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

Промежутки между операторами сравнения

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

Советы по удобству чтения

Сокращайте строки и учитывайте горизонтальные пробелы. Определите стандартную ширину строки (80-120 символов) и разбивайте длинную строку на более мелкие высказывания, не позволяя ей переполняться.

Как уже говорилось, старайтесь соблюдать отступы/иерархию. Отступы в коде могут улучшить читаемость.

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

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

Вертикальные интервалы и регионы

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

  • Сгруппируйте зависимые или похожие методы вместе: Код должен быть логичным и последовательным. Храните методы, которые выполняют одно и то же действие, рядом друг с другом, чтобы человеку, читающему вашу логику, не пришлось прыгать по файлам.
  • Используйте вертикальные пробелы для разделения отдельных частей вашего класса: Например, вы можете добавить две пустые строки между ними:
  • Объявление переменных и методы
  • Классы и интерфейсы
  • блоки if-then-else (если это поможет читаемости)

Сведите это к минимуму и, если возможно, отследите в своем руководстве по стилю.

Использование регионов в коде

Директива #region позволяет сворачивать и скрывать секции кода в файлах C#, делая большие файлы более управляемыми и удобными для чтения.

Однако если вы будете следовать общим рекомендациям по классам из этого руководства, размер вашего класса будет приемлемым, а директива #region - излишней. Разбейте свой код на более мелкие классы, а не прячьте блоки кода за областями. Вы будете менее склонны добавлять регион, если исходный файл короткий.

Примечание: Многие разработчики считают области запахами кода или антипаттернами. Решите всей командой, на чьей стороне вы находитесь.

C Sharp Peferences
В ОКНЕ ПРЕДВАРИТЕЛЬНОГО ПРОСМОТРА ОТОБРАЖАЮТСЯ ВЫБРАННЫЕ ВАМИ ВАРИАНТЫ РУКОВОДСТВА ПО СТИЛЮ.
Форматирование кода в Visual Studio

Не отчаивайтесь, если эти правила форматирования кажутся вам непосильными. Современные IDE позволяют эффективно настраивать и применять их. Вы можете создать шаблон правил форматирования, а затем сразу преобразовать все файлы проекта.

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

  • В Visual Studio для Windows перейдите в меню Инструменты > Параметры, затем найдите Текстовый редактор > C# > Форматирование стилей кода.
  • Используйте эти настройки для изменения параметров "Общие", "Отступы", "Новые строки", "Интервал" и "Обводка ".
  • В Visual Studio для Mac выберите Visual Studio > Preferences, затем перейдите к Source Code > Code Formatting > C# Source Code.
  • Выберите политику в верхней части, затем перейдите на вкладку " Стиль текста ". На вкладке Формат C# настройте параметры Отступ, Новые строки, Интервал и Обводка.

Чтобы заставить ваш файл сценария соответствовать руководству по стилю:

  • В Visual Studio для Windows перейдите в менюПравка > Дополнительно > Форматировать документ (Ctrl + K, Ctrl + D горячая клавиша). Если вы хотите отформатировать только пробельные символы и выравнивание по табуляции, вы также можете воспользоваться функцией Run Code Cleanup (Ctrl + K , Ctrl + E) в нижней части редактора.
  • В Visual Studio для Mac перейдите в меню Edit > Format Document ( горячие клавиши Ctrl + I ).

В Windows вы также можете поделиться настройками редактора в меню Инструменты > Импорт и экспорт настроек. Экспортируйте файл с форматированием C#-кода руководства по стилю, а затем попросите всех членов команды импортировать этот файл.

Visual Studio поможет вам придерживаться руководства по стилю. Форматирование становится таким же простым, как использование горячей клавиши.

Примечание: Вы можете настроитьEditorConfig (см. выше) вместо импорта и экспорта настроек Visual Studio. Это облегчает совместное использование форматирования в разных IDE. Кроме того, он обладает дополнительным преимуществом - работает с контролем версий. Дополнительные сведения см. в разделе Параметры правил стиля кода .NET.

Хотя это не относится к чистому коду, обязательно ознакомьтесь с 10 способами ускорить рабочий процесс программирования в Unity с помощью Visual Studio. Помните, что форматировать и рефакторить чистый код будет удобнее, если вы примените эти советы по продуктивности.

Получите больше советов по стилю кода

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

Понравился ли вам этот контент?