Главная · Скиллы · dotnet-best-practices

dotnet-best-practicesOfficialлучшие практики .NET GitHub Copilot

github/awesome-copilot

Лучшие практики .NET.

Установка

npx -y skills add github/awesome-copilot --skill dotnet-best-practices --agent claude-code

.NET/C# — лучшие практики

Задача — обеспечить, чтобы код .NET/C# в ${selection} соответствовал лучшим практикам этого решения/проекта. Это включает:

Документация и структура

  • Создавайте исчерпывающие XML-комментарии документации для всех публичных классов, интерфейсов, методов и свойств
  • Включайте описания параметров и возвращаемых значений в XML-комментарии
  • Следуйте устоявшейся структуре пространств имён: {Core|Console|App|Service}.{Feature}

Паттерны проектирования и архитектура

  • Используйте синтаксис первичного конструктора для внедрения зависимостей (напр. public class MyClass(IDependency dependency))
  • Реализуйте паттерн Command Handler с обобщёнными базовыми классами (напр. CommandHandler<TOptions>)
  • Используйте разделение интерфейсов с ясными соглашениями именования (префикс I)
  • Применяйте паттерн Factory для сложного создания объектов

Внедрение зависимостей и сервисы

  • Используйте внедрение через конструктор с проверками на null через ArgumentNullException
  • Регистрируйте сервисы с подходящим временем жизни (Singleton, Scoped, Transient)
  • Используйте паттерны Microsoft.Extensions.DependencyInjection
  • Реализуйте интерфейсы сервисов для тестируемости

Управление ресурсами и локализация

  • Используйте ResourceManager для локализованных сообщений и строк ошибок
  • Разделяйте файлы ресурсов LogMessages и ErrorMessages
  • Обращайтесь к ресурсам через _resourceManager.GetString("MessageKey")

Паттерны async/await

  • Используйте async/await для всех I/O-операций и долгих задач
  • Возвращайте Task или Task<T> из async-методов
  • Используйте ConfigureAwait(false), где уместно
  • Корректно обрабатывайте async-исключения

Стандарты тестирования

  • Используйте фреймворк MSTest с FluentAssertions для проверок
  • Следуйте паттерну AAA (Arrange, Act, Assert)
  • Используйте Moq для мокирования зависимостей
  • Тестируйте сценарии успеха и неудачи
  • Включайте тесты валидации null-параметров

Конфигурация и настройки

  • Используйте строго типизированные классы конфигурации с data annotations
  • Реализуйте атрибуты валидации (Required, NotEmptyOrWhitespace)
  • Используйте привязку IConfiguration для настроек
  • Поддерживайте файлы конфигурации appsettings.json

Semantic Kernel и интеграция ИИ

  • Используйте Microsoft.SemanticKernel для операций ИИ
  • Реализуйте корректную конфигурацию kernel и регистрацию сервисов
  • Обрабатывайте настройки моделей ИИ (ChatCompletion, Embedding и т.д.)
  • Используйте паттерны структурированного вывода для надёжных ответов ИИ

Обработка ошибок и логирование

  • Используйте структурированное логирование с Microsoft.Extensions.Logging
  • Включайте scoped-логирование с осмысленным контекстом
  • Бросайте конкретные исключения с описательными сообщениями
  • Используйте try-catch для ожидаемых сценариев неудачи

Производительность и безопасность

  • Используйте возможности C# 12+ и оптимизации .NET 8, где применимо
  • Реализуйте корректную валидацию и санитизацию ввода
  • Используйте параметризованные запросы для операций с БД
  • Следуйте практикам безопасного кодирования для операций AI/ML

Качество кода

  • Обеспечьте соответствие принципам SOLID
  • Избегайте дублирования через базовые классы и утилиты
  • Используйте осмысленные имена, отражающие концепции домена
  • Держите методы сфокусированными и связными
  • Реализуйте корректные паттерны освобождения ресурсов

Из того же репозитория