Требования к коду на C# #
Смотрите также общие Соглашения о кодировании.
Версия языка и .NET #
Используйте возможности C# 14 и .NET 10. Во всех C# проектах (файлы *.csproj) в свойстве TargetFramework должен быть указан net10.0.
Структура проекта #
Проект должен быть разделён на модули, где один модуль — это один C# проект.
Стиль кодирования #
- Используйте стандартный стиль кодирования от Microsoft и не забывайте о форматировании кода.
- Использование
varзапрещено — всегда указывайте тип явно для повышения читаемости
Статический анализ #
Если вы встретили ложное срабатывание статического анализатора, вы можете использовать #pragma warning disable <ID-предупреждения> либо внести исключение в .editorconfig (если это всегда ложное срабатывание).
Требования к тестам #
- Для тестов на C# используется XUnit
- Проверки выполняются методами класса
Assert - Для запуска одного сценария с разными входными данными следует использовать параметризованные тесты, то есть
[Theory]вместо[Fact]- Параметры в параметризованный тест следует передавать с помощью атрибута
MemberDataи вспомогательного статического метода - Метод, указанный в
MemberData, должен возвращать generic-типTheoryData<>для проверки соответствия типов при компиляции
- Параметры в параметризованный тест следует передавать с помощью атрибута
- Каждый модульный тест содержит только одну последовательность Arrange-Act-Assert (Подготовка-Действие-Проверка)
- Arrange — это блок код, выполняющий подготовку начального состояния сценария
- Act — это блок кода, выполняющий тестируемое действие
- Arrange — это блок кода, выполняющий проверки всех существенных эффектов тестируемого действия
Примеры #
- Основной пример: Интерпретатор языка Tiger
- Устаревший пример: MemSql
- Устаревший пример: PsKaleidoscope