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

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

Шаблон проекта #

Используйте Шаблон проекта на C# / .NET — он показывает правильный стиль кода на примерах.

Доверьтесь статическому анализу

В шаблоне проекта настроен статический анализ и правила форматирования. Пользуйтесь автоформатированием и смотрите на предупреждения заранее настроенных анализаторов.

Правило №1. Код должен собираться без предупреждений #

  • Обратите внимание, что в проекте подключены статические анализаторы, которые могут создавать предупреждения и ошибки при сборке.
  • Анализаторы подключаются в файле Directory.Build.props и учитывают настройки из файла .editorconfig. Удалять анализаторы кода нельзя.
  • Если вы уверены, что диагностика — это ложное срабатывание, вы можете отключить её с помощью #pragma warning disable <ID-предупреждения> либо в .editorconfig.

Правило №2. Не принимается код без тестов #

Тесты для C# пишутся на XUnit.

Можно писать модульные и/или интеграционные тесты.

Допускается не покрывать тестами:

  1. Вспомогательные скрипты проекта
  2. Примеры кода на других языках программирования в каталоге docs/examples/

Советы:

  • лучше составить список тестов до начала тестирования.
  • лучше писать тесты нового метода или новой логики прежде добавления самого метода или новой логики.
  • сперва проверяйте основные сценарии, затем — пограничные случаи, затем — негативные сценарии (выброс исключений)

Стиль написания модульных тестов

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

Правило №3. Соблюдайте единый стиль кодирования #

Используйте стандартный стиль кодирования от Microsoft и не забывайте о форматировании кода.

Дополнительные требования:

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