我在学习迈克尔·哈特尔的rails课程,on chapter 4
我的职能全称如下:
app/helpers/application_helper.rb

module ApplicationHelper
  def full_title page_title = ""
    base_title = t "app_name"
    page_title.empty? ? base_title : page_title + " | " + base_title
  end
end

运行reek(代码审查工具),我收到一个警告:
app/helpers/application_helper.rb -- 1 warning:
  [4, 4]:FeatureEnvy: ApplicationHelper#full_title refers to 'page_title' more than self (maybe move it to another class?) [https://github.com/troessner/reek/blob/master/docs/Feature-Envy.md]

那么什么是FeatureEnvy,在这种情况下如何解决呢?

最佳答案

documentation of reek对feature envy的解释如下:
当一个代码片段引用另一个对象的频率高于它引用自身时,或者当多个客户机对一个特定类型的对象执行相同的操作系列时,就会发生feature envy。
在这种情况下,我认为这个问题可以忽略不计helper方法很自然地接受参数并对其进行操作,而不是引用在本例中是view对象的self
如何从reek的分析中排除助手:
通过将其添加到config.reek文件中,您应该能够排除检查所有帮助程序是否符合“feature envy”规则:

"app/helpers":
  FeatureEnvy:
    enabled: false

10-08 04:35