2015-11-29 7 views
0

Так что я просто игнорирую это предупреждение анализа кода, подавляя его? Или есть способ по-настоящему исправить это?

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

Скажем, у меня есть веб-сайт для компании, которая поставляется в 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>) всех стран, из которых можно выбирать.
Большинство таких приложений будут читать эту информацию из базы данных, но эти данные редко меняются и помещают их в базу данных, что замедляет работу сайта. Можно было бы поместить это в плоский файл для чтения, но опять же, скомпилированный в коде будет быстрее. Наконец, у нас есть некоторые модульные тесты, чтобы убедиться, что эта информация верна, которая выполняется с каждой сборкой (сложнее сделать для информации в базе данных).
Это единственный способ уменьшить циклическую сложность для списка известных значений, чтобы прочитать его из какого-то источника вне кода? (Если это так, подавление сообщения, вероятно, правильно.)

+4

Могу ли я спросить, почему цикломатическая сложность высока в этом конкретном случае? Существует только один путь к следующему, никакого разветвления какого-то рода, не так ли? Насколько я понимаю, метод, который вы указали, будет иметь цикломатическую сложность 1. Правильно ли я? – Kzrystof

+3

Не уменьшайте цикломатическую сложность только для этого. Используйте циклическую сложность как инструмент для поиска возможных фрагментов кода, нуждающихся в рефакторинге. – Mephy

+1

Трудно, мягко говоря, увидеть, что что-либо, описанное в вашем вопросе, приведет к высокому цикломатическому счету сложности. Пожалуйста, предоставьте хороший [mcve], который надежно воспроизводит проблему. Пожалуйста, предоставьте дополнительную информацию о том, почему оценка высокая и что вы уже пробовали с точки зрения ее уменьшения. –

ответ

0

Как указывалось другими, создание коллекции само по себе имело циклическую сложность 1. Но объект, который был в коллекции, использовал a func<string>, и это повлекло сложность - в основном 2 для каждого элемента в коллекции! Спасибо за помощь.

 Смежные вопросы

  • Нет связанных вопросов^_^