Skip to content

Latest commit

 

History

History
70 lines (59 loc) · 5.59 KB

File metadata and controls

70 lines (59 loc) · 5.59 KB

Правила для GitHub Copilot

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

Комментарии

  • Короткие пояснительные комментарии располагай в конце той же строки, что и код // кратко по делу
  • Старайся избегать тривиальных комментариев

XML‑документация

  • Документируй классы, структуры, делегаты, перечисления и их члены только XML‑комментариями
  • Одинарное предложение пиши в одной строке внутри тега и без точки в конце
  • Каждый тег XML‑комментария располагай на отдельной строке
  • Порядок тегов: <summary><param><returns><exception><remarks><example>
  • Для сложных публичных метдов генерируй блок с простым примером использования кода внутри тега <example>

Примеры:

  • <summary>Краткое описание сущности</summary>
  • <param name="Value">Описание параметра</param>
  • <returns>Описание возвращаемого значения</returns>

Синтаксис и минимализм

  • При генерации кода используй современные конструкции языка, совместимые с целевыми платформами проекта
  • Стремись минимизировать количество фигурных скобок за счёт expression‑bodied членов и switch‑выражений
  • Не убирай фигурные скобки в многострочных конструкциях ради читаемости
  • Всегда старайся минимизировать размер кода, если не запрошено иное

Разрешённые современные приёмы (когда поддерживается целевой платформой):

  • file‑scoped namespace
  • expression‑bodied члены
  • switch‑выражения и pattern matching
  • target‑typed new
  • collection expressions и инициализаторы коллекций
  • using var и await using
  • операторы ??, ??=, is not, with
  • упрощение nullable-присвоения target?.Property = 15; вместо if(target is not null) target.Property = 15;

Именование

  • Локальные переменные: snake_case
  • Параметры методов: PascalCase
  • Поля экземпляров: _PascalCase
  • Статические поля: __PascalCase
  • Константы: PascalCase
  • Публичные типы и члены API: PascalCase
  • Предпочитай английский язык при именовании переменных, методов, классов и прочих сущностей

Инициализация и объявления

  • При инициализации массивов, списков и словарей используй выражения инициализации массивов/коллекций
  • При объявлении переменных предпочитай использовать ключевое слово var (кроме случаев, когда явный тип заметно повышает понятность)

Форматирование

  • Короткие системные комментарии пиши компактно в одну строку
  • Удаляй неиспользуемые using, сортируй и группируй директивы using
  • Разделяй логические блоки пустыми строками по мере необходимости, избегай лишних переносов

Практики .NET

  • Включай #nullable enable там, где это поддерживается
  • Используй guard‑выражения, например ArgumentNullException.ThrowIfNull(x)
  • Предпочитай Try‑паттерны для контроля потока вместо исключений
  • При генерации метода добавляй в его начале блок проверки входных параметров. Отделяй этот блок пустой строкой от остального тела метода
  • При генерации публичных свойств у моделей-представления MVVM (классов, реализующих INotifyPropertyChanged) используй следующий формат (в одну строку):
/// <summary>Описание свойства</summary>
public string PropertyName { get; set => Set(ref field, value); }
  • Для простых лаконичных методов используй expression‑bodied синтаксис, записанный в одну строку.

Совместимость целей

  • В рабочем пространстве используются целевые платформы: .NET Standard 2.0 и .NET 10
  • Применяй современные возможности языка и платформы только если они доступны для соответствующей целевой платформы проекта