Rubocop Lint/DuplicateMethods -- 我应该保留哪个副本?

Rubocop Lint/DuplicateMethods -- which duplicate should I keep?

提问人:David Hempy 提问时间:3/23/2022 更新时间:3/23/2022 访问量:601

问:

Rubocop 报告:

app/models/transformer.rb:8:3: W: Lint/DuplicateMethods: Method Painter#last_color 
  is defined at both app/models/painter.rb:2 and app/models/painter.rb:5.

Painter 类如下所示:

class Painter
  attr_accessor :last_color
  alias last_color recent_color

  def last_color
    colors.last
  end
end

哪一个真正被使用?访问器、别名还是方法?

Ruby-on-Rails Ruby 方法 复制 Rubocop

评论


答:

0赞 David Hempy 3/23/2022 #1

定义的方法优先于别名和访问器。

应删除访问器和别名,只保留类中定义的方法。

0赞 Prateek Choudhary 3/23/2022 #2

如果要定义一个公共方法,那么添加一个是多余的。last_colorattr_accessor

因此,如果你问哪个会在你运行时被执行,那么答案就是你定义的方法。Painter.new.last_color

您不需要去掉别名(假设您出于某种原因需要它)。