Размер ABC [1][2]
вычисляется путем подсчета количества назначений, ветвей и условий для раздела кода. Правила подсчета в оригинальной статье C++ Report были специально для языков C, C++ и Java.
В предыдущих ссылках подробно описано, что считается для A, B и C. Размер ABC — это скалярная величина, напоминающая триангулированное отношение:
|ABC| = sqrt((A*A)+(B*B)+(C*C))
Собственно, беглый гугль по ошибке показывает, что первой проиндексированной страницей является документы Rubocop для метода, который отображает это сообщение.
Ваш инструмент репо или анализа определит пороговую сумму при срабатывании предупреждения.
Расчет, если вам нравится причинять себе вред...
Ваш код рассчитывается как
(1+1+1)^2 +
(1+1+1+1+1+1+1+1+1+1+1+1+1)^2 +
(1+1+1+1)^2
=> 194
Это «слепой» расчет со значениями, которые я составил (1
s). Однако вы можете видеть, что в ошибке указаны числа, которые, вероятно, теперь имеют смысл как ваша ABC и порог:
[30.95/24]
Таким образом, порог копа равен 24
, а ваш ABC size
равен 30.95
. Это говорит нам о том, что механизм rubocop присваивает разные номера для A, B и C. Кроме того, разные виды или назначения (или B или C) также могут иметь разные значения. НАПРИМЕР. «нормальное» задание x = y
, возможно, оценивается ниже, чем связанное задание x = y = z = r
.
тл;д-р ответ
На данный момент у вас, вероятно, есть довольно четкое представление о том, как уменьшить размер ABC. Если не:
- простой способ взять условное выражение, используемое для вашего
elsif
, и поместить его во вспомогательный метод.
- поскольку вы назначаете переменную
@
и в основном вызываете из нее, ваш код не использует инкапсуляцию памяти. Таким образом, вы можете переместить как if
, так и elsif
действия блока в свои собственные методы load_search_users_by_role
и load_search_users_by_order
.
person
New Alexandria
schedule
09.01.2016