|
1 | | -Всегда отвечай мне используя русский язык. |
2 | | -Всегда пиши комментарии в коде на русском языке. |
3 | | -Комментарии к классам, структурам делегатам и перечислениям, а также к их членам всегда пиши в системном виде. |
4 | | -При написании комментариев (ели они короткие) в коде предпочитай размещение комментария в конце той же строке, что и сам комментируемый код. |
5 | | -Старайся избегать тривиальных комментариев. |
6 | | -При герерации кода старайся минимизировать количество фигурных скобок. |
7 | | -При генерации кода используй самые современные виды синтаксических конструкций языка. |
8 | | -Всегда старайся минимизировтаь размер кода если не запрошено иное. |
9 | | -Используй стиль именования локальных переменных snake_case. |
10 | | -Используй стиль именования входных переменных методов PascalCase. |
11 | | -Используй стиль именования полей классов _PascalCase для нестатических переменных и __PascalCase для статических переменных. |
12 | | -Ппредпочитай английский язык при именовании переменных, методов, классов и прочих сущностей. |
13 | | -При инициализации массивов, списков и словарей используй выражения инициализации массивов. |
14 | | -При объявлении переменных предпочитай использовать ключевое слово var. |
15 | | -При написании системных комментариев старайся писать их компактно в одну строку, если длина текста небольшая. |
| 1 | +# Правила для GitHub Copilot |
| 2 | + |
| 3 | +- Всегда отвечай, используя русский язык |
| 4 | +- Всегда пиши комментарии в коде на русском языке |
| 5 | + |
| 6 | +## Комментарии |
| 7 | +- Короткие пояснительные комментарии располагай в конце той же строки, что и код // кратко по делу |
| 8 | +- Старайся избегать тривиальных комментариев |
| 9 | + |
| 10 | +## XML‑документация |
| 11 | +- Документируй классы, структуры, делегаты, перечисления и их члены только XML‑комментариями |
| 12 | +- Одинарное предложение пиши в одной строке внутри тега и без точки в конце |
| 13 | +- Каждый тег XML‑комментария располагай на отдельной строке |
| 14 | +- Порядок тегов: `<summary>` → `<param>` → `<returns>` → `<exception>` → `<remarks>` → `<example>` |
| 15 | +- Для сложных публичных метдов генерируй блок с простым примером использования кода внутри тега `<example>` |
| 16 | + |
| 17 | +Примеры: |
| 18 | +- `<summary>Краткое описание сущности</summary>` |
| 19 | +- `<param name="Value">Описание параметра</param>` |
| 20 | +- `<returns>Описание возвращаемого значения</returns>` |
| 21 | + |
| 22 | +## Синтаксис и минимализм |
| 23 | +- При генерации кода используй современные конструкции языка, совместимые с целевыми платформами проекта |
| 24 | +- Стремись минимизировать количество фигурных скобок за счёт expression‑bodied членов и switch‑выражений |
| 25 | +- Не убирай фигурные скобки в многострочных конструкциях ради читаемости |
| 26 | +- Всегда старайся минимизировать размер кода, если не запрошено иное |
| 27 | + |
| 28 | +Разрешённые современные приёмы (когда поддерживается целевой платформой): |
| 29 | +- file‑scoped namespace |
| 30 | +- expression‑bodied члены |
| 31 | +- switch‑выражения и pattern matching |
| 32 | +- target‑typed `new` |
| 33 | +- collection expressions и инициализаторы коллекций |
| 34 | +- `using var` и `await using` |
| 35 | +- операторы `??`, `??=`, `is not`, `with` |
| 36 | +- упрощение nullable-присвоения `target?.Property = 15;` вместо `if(target is not null) target.Property = 15;` |
| 37 | + |
| 38 | +## Именование |
| 39 | +- Локальные переменные: `snake_case` |
| 40 | +- Параметры методов: `PascalCase` |
| 41 | +- Поля экземпляров: `_PascalCase` |
| 42 | +- Статические поля: `__PascalCase` |
| 43 | +- Константы: `PascalCase` |
| 44 | +- Публичные типы и члены API: `PascalCase` |
| 45 | +- Предпочитай английский язык при именовании переменных, методов, классов и прочих сущностей |
| 46 | + |
| 47 | +## Инициализация и объявления |
| 48 | +- При инициализации массивов, списков и словарей используй выражения инициализации массивов/коллекций |
| 49 | +- При объявлении переменных предпочитай использовать ключевое слово `var` (кроме случаев, когда явный тип заметно повышает понятность) |
| 50 | + |
| 51 | +## Форматирование |
| 52 | +- Короткие системные комментарии пиши компактно в одну строку |
| 53 | +- Удаляй неиспользуемые `using`, сортируй и группируй директивы `using` |
| 54 | +- Разделяй логические блоки пустыми строками по мере необходимости, избегай лишних переносов |
| 55 | + |
| 56 | +## Практики .NET |
| 57 | +- Включай `#nullable enable` там, где это поддерживается |
| 58 | +- Используй guard‑выражения, например `ArgumentNullException.ThrowIfNull(x)` |
| 59 | +- Предпочитай Try‑паттерны для контроля потока вместо исключений |
| 60 | +- При генерации метода добавляй в его начале блок проверки входных параметров. Отделяй этот блок пустой строкой от остального тела метода |
| 61 | +- При генерации публичных свойств у моделей-представления MVVM (классов, реализующих INotifyPropertyChanged) используй следующий формат (в одну строку): |
| 62 | +```csharp |
| 63 | +/// <summary>Описание свойства</summary> |
| 64 | +public string PropertyName { get; set => Set(ref field, value); } |
| 65 | +``` |
| 66 | +- Для простых лаконичных методов используй expression‑bodied синтаксис, записанный в одну строку. |
| 67 | + |
| 68 | +## Совместимость целей |
| 69 | +- В рабочем пространстве используются целевые платформы: `.NET Standard 2.0` и `.NET 10` |
| 70 | +- Применяй современные возможности языка и платформы только если они доступны для соответствующей целевой платформы проекта |
0 commit comments