I'm learning Rails course by Michael Hartl, on chapter 4, I have function full_title as following:

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

Runing reek (a code review tool), I got a warning:

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]

So what is FeatureEnvy and how to fix it in this case?

1

There are 1 best solutions below

0
On BEST ANSWER

The documentation of reek explains feature envy as follows:

Feature Envy occurs when a code fragment references another object more often than it references itself, or when several clients do the same series of manipulations on a particular type of object.

In this particular case, I believe this issue can be ignored. It is natural for helper methods to take arguments and operate on those, instead of referencing self, which is the view object in this case.

How to exclude helpers from reek's analysis:

You should be able to exclude all helpers from being checked for compliance with the "feature envy" rule by adding this to the config.reek file:

"app/helpers":
  FeatureEnvy:
    enabled: false