Ruby “怎么做?”;索引的分配分支条件大小太大“;工作

Ruby “怎么做?”;索引的分配分支条件大小太大“;工作,ruby,code-metrics,rubocop,Ruby,Code Metrics,Rubocop,Rubocop始终报告错误: app/controllers/account\u controller.rb:5:3:C:索引的分配分支条件大小太大。[30.95/24] 如何修复它?有人有好主意吗? 通过计算一段代码的赋值、分支和条件的数量来计算。原始C++报表文章中的计数规则具体用于C、C++和java语言。 前面的链接详细说明了A、B和C的重要性。ABC大小是一个标量大小,让人想起三角关系: |ABC| = sqrt((A*A)+(B*B)+(C*C)) 事实上,快速搜索错误显示第一个索

Rubocop始终报告错误:

app/controllers/account\u controller.rb:5:3:C:索引的分配分支条件大小太大。[30.95/24]

如何修复它?有人有好主意吗?

通过计算一段代码的赋值、分支和条件的数量来计算。原始C++报表文章中的计数规则具体用于C、C++和java语言。 前面的链接详细说明了A、B和C的重要性。ABC大小是一个标量大小,让人想起三角关系:

|ABC| = sqrt((A*A)+(B*B)+(C*C))
事实上,快速搜索错误显示第一个索引页面是

触发警告时,您的回购或分析工具将定义阈值金额

算计,如果你喜欢自作自受。。。。 您的代码计算为

(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]
所以cop阈值是
24
,而您的
ABC大小是
30.95
。这告诉我们rubocop引擎为A、B和C分配不同的数字。同样,不同的类型或分配(或B或C)也可能有不同的值。例如,“正常”作业
x=y
的得分可能低于链式作业
x=y=z=r

tl;answer博士 在这一点上,你可能有一个相当清楚的想法,如何减少你的ABC大小。如果没有:

  • 一种简单的方法是获取用于
    elsif
    的条件并将其放置在helper方法中
  • 由于您正在分配一个
    @
    变量,并且主要是从一个变量调用,因此您的代码不使用内存封装。因此,您可以将
    if
    elsif
    阻止操作移动到各自的
    load\u search\u users\u by\u role
    load\u search\u users\u by\u order
    方法中

  • 谢谢你explanation@pangpang您应该在方法名称的末尾使用“bang”(
    ),就像我写的那样,因为当一个方法由于执行而改变数据/状态时,这是ruby约定。还有,谢谢你&格拉德诺,这不是惯例。惯例是,当且仅当有两种方法做相同的事情时,那么更令人惊讶的一种方法被命名为bang。这与变异无关(参见ActiveRecord中的
    save
    vs.
    save!
    ,或者Ruby中的
    exit
    vs.
    exit!
    ),它只适用于有两种方法的情况(例如,请参见
    数组
    字符串
    哈希
    中的十几种方法,它们修改了接收器,但没有任何效果。)只有当存在同名的非bang方法时,才应该存在bang方法。@jorgwmittag我看到你发布了很多好东西。我会带你去你的word.c2.com链接断了——下面是另一个很好的描述:
     [30.95/24]