Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
85 changes: 70 additions & 15 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
@@ -1,15 +1,70 @@
Всегда отвечай мне используя русский язык.
Всегда пиши комментарии в коде на русском языке.
Комментарии к классам, структурам делегатам и перечислениям, а также к их членам всегда пиши в системном виде.
При написании комментариев (ели они короткие) в коде предпочитай размещение комментария в конце той же строке, что и сам комментируемый код.
Старайся избегать тривиальных комментариев.
При герерации кода старайся минимизировать количество фигурных скобок.
При генерации кода используй самые современные виды синтаксических конструкций языка.
Всегда старайся минимизировтаь размер кода если не запрошено иное.
Используй стиль именования локальных переменных snake_case.
Используй стиль именования входных переменных методов PascalCase.
Используй стиль именования полей классов _PascalCase для нестатических переменных и __PascalCase для статических переменных.
Ппредпочитай английский язык при именовании переменных, методов, классов и прочих сущностей.
При инициализации массивов, списков и словарей используй выражения инициализации массивов.
При объявлении переменных предпочитай использовать ключевое слово var.
При написании системных комментариев старайся писать их компактно в одну строку, если длина текста небольшая.
# Правила для 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) используй следующий формат (в одну строку):
```csharp
/// <summary>Описание свойства</summary>
public string PropertyName { get; set => Set(ref field, value); }
```
- Для простых лаконичных методов используй expression‑bodied синтаксис, записанный в одну строку.

## Совместимость целей
- В рабочем пространстве используются целевые платформы: `.NET Standard 2.0` и `.NET 10`
- Применяй современные возможности языка и платформы только если они доступны для соответствующей целевой платформы проекта
2 changes: 1 addition & 1 deletion .github/workflows/publish.yml
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
dotnet-version: 10.0.x

- name: Cache NuGet
uses: actions/cache@v4
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/testing.yml
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ jobs:
- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 9.0.x
dotnet-version: 10.0.x

- name: Cache NuGet
uses: actions/cache@v4
Expand Down
8 changes: 7 additions & 1 deletion MathCore.DSP.sln.DotSettings
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,14 @@
<s:String x:Key="/Default/CodeInspection/Highlighting/InspectionSeverities/=UnusedType_002EGlobal/@EntryIndexedValue">DO_NOT_SHOW</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=DSP/@EntryIndexedValue">DSP</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FFT/@EntryIndexedValue">FFT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FIR/@EntryIndexedValue">FIR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=FT/@EntryIndexedValue">FT</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=II/@EntryIndexedValue">II</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=IIR/@EntryIndexedValue">IIR</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=PNG/@EntryIndexedValue">PNG</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RC/@EntryIndexedValue">RC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=RLC/@EntryIndexedValue">RLC</s:String>
<s:String x:Key="/Default/CodeStyle/Naming/CSharpNaming/Abbreviations/=SI/@EntryIndexedValue">SI</s:String>
<s:Boolean x:Key="/Default/UserDictionary/Words/=ALGLIB/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arcch/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=arcsh/@EntryIndexedValue">True</s:Boolean>
Expand All @@ -35,4 +39,6 @@
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0422_044C_044E_043A_0438/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0430_043D_0430_043B_043E_0433_0432_043E_0433_043E/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_0434_0438_0441_043A_0440_0435_0442/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043A_0435_0448_0438_0440_043E_0432_0430_043D_0438_0435_043C/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043A_0435_0448_0438_0440_043E_0432_0430_043D_0438_0435_043C/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043F_0435_0440_0435_0447_0441_0438_0442_044B_0432_0430_0435_043C/@EntryIndexedValue">True</s:Boolean>
<s:Boolean x:Key="/Default/UserDictionary/Words/=_043F_043E_043B_043E_0441_043E_0437_0430_0433_0440_0430_0436_0434_0430_044E_0449_0435_0433_043E/@EntryIndexedValue">True</s:Boolean></wpf:ResourceDictionary>
Loading