CA1026 (все параметры должны иметь значения по умолчанию), и дополнительные методы

Предпосылка

При использовании анализа кода (или fxCop) с дополнительными параметрами C# можно получить предупреждение CA1026. Короткий reason1 для этого не является suppling все параметры со значением по умолчанию.

Объявление ниже справедливо генерирует это предупреждение

public Color GetColor(bool red, bool blue = true, bool green = true)

Однако существует ситуация, где Вы не могли предоставить все параметры значение по умолчанию, и это - дополнительные методы. Таким образом, объявление ниже генерирует предупреждение из-за первого параметра:

public static bool ValidateRules(this string s, Rules rules = Rules.Default)

Компилятор не позволит Вам указать значение по умолчанию на этом параметре, таким образом, эти только два решения будут к:

  1. Проигнорируйте предупреждение, которое мне не нравится делать, потому что оно приводит к плохим методам.
  2. Не используют дополнительные методы, которые мне не нравится делать, потому что я нахожу, что дополнительные методы делают код большим количеством readible.

Вопросы

  • Являются вышеупомянутые две опции единственным способом решить это?
  • Анализ действительно ли fxCop/Code является неправильным в, он - проверка?

  1. Долгая причина
19
задан Robert MacLean 20 July 2010 в 16:01
поделиться

2 ответа

Это не предупреждение за отсутствие значений по умолчанию для всех параметров - это предупреждение за использование необязательных параметров вообще.

Лично я бы отключил это конкретное предупреждение. Я считаю, что необязательные параметры можно использовать с осторожностью. Вы должны хорошо подумать о них, особенно в плане версионирования значения параметра по умолчанию и в плане языков, которые их не поддерживают (включая C# до версии 4), но во многих средах их недостатки действительно не являются проблемой - и в итоге вы можете получить гораздо более простой код, чем при указании перегрузок повсюду.

34
ответ дан 30 November 2019 в 03:43
поделиться

Вы можете подавить предупреждение в каждом конкретном случае.

1
ответ дан 30 November 2019 в 03:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: