Требования к коду на C# #
Шаблон проекта #
Используйте Шаблон проекта на C# / .NET — он показывает правильный стиль кода на примерах.
Доверьтесь статическому анализу
В шаблоне проекта настроен статический анализ и правила форматирования. Пользуйтесь автоформатированием и смотрите на предупреждения заранее настроенных анализаторов.
Правило №1. Код должен собираться без предупреждений #
- Обратите внимание, что в проекте подключены статические анализаторы, которые могут создавать предупреждения и ошибки при сборке.
- Анализаторы подключаются в файле
Directory.Build.propsи учитывают настройки из файла.editorconfig. Удалять анализаторы кода нельзя. - Если вы уверены, что диагностика — это ложное срабатывание, вы можете отключить её с помощью
#pragma warning disable <ID-предупреждения>либо в.editorconfig.
Правило №2. Не принимается код без тестов #
Тесты для C# пишутся на XUnit.
Можно писать модульные и/или интеграционные тесты.
Допускается не покрывать тестами:
- Вспомогательные скрипты проекта
- Примеры кода на других языках программирования в каталоге
docs/examples/
Советы:
- лучше составить список тестов до начала тестирования.
- лучше писать тесты нового метода или новой логики прежде добавления самого метода или новой логики.
- сперва проверяйте основные сценарии, затем — пограничные случаи, затем — негативные сценарии (выброс исключений)
Стиль написания модульных тестов
- Для модульного тестирования используется XUnit, проверки выполняются методами класса
Assert - Для запуска одного сценария с разными входными данными следует использовать параметризованные тесты, то есть
[Theory]вместо[Fact]- Параметры в параметризованный тест следует передавать с помощью атрибута
MemberDataи вспомогательного статического метода - Метод, указанный в
MemberData, должен возвращать generic-типTheoryData<>для проверки соответствия типов при компиляции
- Параметры в параметризованный тест следует передавать с помощью атрибута
- Каждый тест содержит только одну последовательность Arrange-Act-Assert (Подготовка-Действие-Проверка)
- Arrange — это блок код, выполняющий подготовку начального состояния сценария
- Act — это блок кода, выполняющий тестируемое действие
- Arrange — это блок кода, выполняющий проверки всех существенных эффектов тестируемого действия
Правило №3. Соблюдайте единый стиль кодирования #
Используйте стандартный стиль кодирования от Microsoft и не забывайте о форматировании кода.
Дополнительные требования:
- Использование
varзапрещено — всегда указывайте тип явно для повышения читаемости - В классах не должно быть неиспользуемого либо закомментированного кода