Так что я просто игнорирую это предупреждение анализа кода, подавляя его? Или есть способ по-настоящему исправить это?
Вот история пользователь, который приближается к моему, но я изменил его немного, так что информация о компании находится не на месте ...
Скажем, у меня есть веб-сайт для компании, которая поставляется в 15 стран мира, а также они хотят показать имена этих стран на выбранном пользователем языке из соответствующего файла resources.resx. Теперь мои «параметры» в списке сложнее, чем просто пара имя/значение или ключ/значение. Таким образом, текущий код имеет метод, который возвращает все варианты, так что он может выглядеть следующим образом:
Как улучшить циклическую сложность некоторых параметров?
return new[]
{
new CountryOption(code1, resourceKey1, someOtherValue1),
new CountryOption(code2, resourceKey2, someOtherValue2),
new CountryOption(code3, resourceKey3, someOtherValue3),
... (repeat 12 more times so I have 15 countries)
};
Таким образом, я получаю список (IEnumerable<CountryOption>
) всех стран, из которых можно выбирать.
Большинство таких приложений будут читать эту информацию из базы данных, но эти данные редко меняются и помещают их в базу данных, что замедляет работу сайта. Можно было бы поместить это в плоский файл для чтения, но опять же, скомпилированный в коде будет быстрее. Наконец, у нас есть некоторые модульные тесты, чтобы убедиться, что эта информация верна, которая выполняется с каждой сборкой (сложнее сделать для информации в базе данных).
Это единственный способ уменьшить циклическую сложность для списка известных значений, чтобы прочитать его из какого-то источника вне кода? (Если это так, подавление сообщения, вероятно, правильно.)
Могу ли я спросить, почему цикломатическая сложность высока в этом конкретном случае? Существует только один путь к следующему, никакого разветвления какого-то рода, не так ли? Насколько я понимаю, метод, который вы указали, будет иметь цикломатическую сложность 1. Правильно ли я? – Kzrystof
Не уменьшайте цикломатическую сложность только для этого. Используйте циклическую сложность как инструмент для поиска возможных фрагментов кода, нуждающихся в рефакторинге. – Mephy
Трудно, мягко говоря, увидеть, что что-либо, описанное в вашем вопросе, приведет к высокому цикломатическому счету сложности. Пожалуйста, предоставьте хороший [mcve], который надежно воспроизводит проблему. Пожалуйста, предоставьте дополнительную информацию о том, почему оценка высокая и что вы уже пробовали с точки зрения ее уменьшения. –