Требования к коду на C#

Требования к коду на C# #

Смотрите также общие Соглашения о кодировании.

Версия языка и .NET #

Используйте возможности C# 14 и .NET 10. Во всех C# проектах (файлы *.csproj) в свойстве TargetFramework должен быть указан net10.0.

Структура проекта #

Проект должен быть разделён на модули, где один модуль — это один C# проект.

Стиль кодирования #

  1. Используйте стандартный стиль кодирования от Microsoft и не забывайте о форматировании кода.
  2. Использование var запрещено — всегда указывайте тип явно для повышения читаемости

Статический анализ #

Если вы встретили ложное срабатывание статического анализатора, вы можете использовать #pragma warning disable <ID-предупреждения> либо внести исключение в .editorconfig (если это всегда ложное срабатывание).

Требования к тестам #

  1. Для тестов на C# используется XUnit
  2. Проверки выполняются методами класса Assert
  3. Для запуска одного сценария с разными входными данными следует использовать параметризованные тесты, то есть [Theory] вместо [Fact]
    • Параметры в параметризованный тест следует передавать с помощью атрибута MemberData и вспомогательного статического метода
    • Метод, указанный в MemberData, должен возвращать generic-тип TheoryData<> для проверки соответствия типов при компиляции
  4. Каждый модульный тест содержит только одну последовательность Arrange-Act-Assert (Подготовка-Действие-Проверка)
    • Arrange — это блок код, выполняющий подготовку начального состояния сценария
    • Act — это блок кода, выполняющий тестируемое действие
    • Arrange — это блок кода, выполняющий проверки всех существенных эффектов тестируемого действия

Примеры #

  1. Основной пример: Интерпретатор языка Tiger
  2. Устаревший пример: MemSql
  3. Устаревший пример: PsKaleidoscope