"Assignment Branch Condition size for index is too high" 是如何工作的?
How does "Assignment Branch Condition size for index is too high" work?
Rubocop 总是报错:
app/controllers/account_controller.rb:5:3: C: Assignment Branch Condition size for index is too high. [30.95/24]
if params[:role]
@users = @search.result.where(:role => params[:role])
elsif params[:q] && params[:q][:s].include?('count')
@users = @search.result.order(params[:q][:s])
else
@users = @search.result
end
如何解决?谁有好主意?
computed by counting the number of assignments, branches and conditions for a section of code. The counting rules in the original C++ Report article were specifically for the C, C++ and Java languages.
前面的链接详细说明了 A、B 和 C 的重要性。ABC 大小是标量大小,让人联想到三角关系:
|ABC| = sqrt((A*A)+(B*B)+(C*C))
实际上,对错误的快速 google 显示第一个索引页面是 the Rubocop docs for the method that renders that message。
您的存储库或分析工具将定义触发警告时的阈值。
计算中,如果你喜欢self-inflicting...
您的代码计算为
(1+1+1)^2 +
(1+1+1+1+1+1+1+1+1+1+1+1+1)^2 +
(1+1+1+1)^2
=> 194
这是一个 'blind' 计算,其中包含我编写的值 (1
s)。但是,您可以看到错误状态数字现在可能作为您的 ABC 和阈值有意义:
[30.95/24]
所以警察门槛是 24
而你的 ABC size
是 30.95
。这告诉我们,rubocop 引擎为 A、B 和 C 分配了不同的数字。同样,不同的种类或分配(或 B 或 C)也可能有不同的值。例如。 'normal' 作业 x = y
的得分可能低于链式作业 x = y = z = r
.
tl;博士回答
此时,您可能对如何减小 ABC 大小有了相当清晰的认识。如果不是:
- 获取用于
elsif
的条件并将其放入辅助方法的简单方法。
- 因为您正在分配一个
@
变量,并且主要也是从一个变量调用,所以您的代码没有使用内存封装。因此,您可以将 if
和 elsif
块操作移动到各自的 load_search_users_by_role
和 load_search_users_by_order
方法中。
Rubocop 总是报错:
app/controllers/account_controller.rb:5:3: C: Assignment Branch Condition size for index is too high. [30.95/24]
if params[:role]
@users = @search.result.where(:role => params[:role])
elsif params[:q] && params[:q][:s].include?('count')
@users = @search.result.order(params[:q][:s])
else
@users = @search.result
end
如何解决?谁有好主意?
computed by counting the number of assignments, branches and conditions for a section of code. The counting rules in the original C++ Report article were specifically for the C, C++ and Java languages.
前面的链接详细说明了 A、B 和 C 的重要性。ABC 大小是标量大小,让人联想到三角关系:
|ABC| = sqrt((A*A)+(B*B)+(C*C))
实际上,对错误的快速 google 显示第一个索引页面是 the Rubocop docs for the method that renders that message。
您的存储库或分析工具将定义触发警告时的阈值。
计算中,如果你喜欢self-inflicting...
您的代码计算为
(1+1+1)^2 +
(1+1+1+1+1+1+1+1+1+1+1+1+1)^2 +
(1+1+1+1)^2
=> 194
这是一个 'blind' 计算,其中包含我编写的值 (1
s)。但是,您可以看到错误状态数字现在可能作为您的 ABC 和阈值有意义:
[30.95/24]
所以警察门槛是 24
而你的 ABC size
是 30.95
。这告诉我们,rubocop 引擎为 A、B 和 C 分配了不同的数字。同样,不同的种类或分配(或 B 或 C)也可能有不同的值。例如。 'normal' 作业 x = y
的得分可能低于链式作业 x = y = z = r
.
tl;博士回答
此时,您可能对如何减小 ABC 大小有了相当清晰的认识。如果不是:
- 获取用于
elsif
的条件并将其放入辅助方法的简单方法。 - 因为您正在分配一个
@
变量,并且主要也是从一个变量调用,所以您的代码没有使用内存封装。因此,您可以将if
和elsif
块操作移动到各自的load_search_users_by_role
和load_search_users_by_order
方法中。