web-dev-qa-db-fra.com

Qu'entend-on par "Taille de condition de branche d'assignation trop élevée" et comment y remédier?

Dans mon Rails, j’utilise Rubocop pour rechercher des problèmes. Aujourd’hui, il m’a donné une erreur comme celle-ci: Assignment Branch Condition size for show is too high. Voici mon code:

def show
  @category = Category.friendly.find(params[:id])
  @categories = Category.all
  @search = @category.products.approved.order(updated_at: :desc).ransack(params[:q])
  @products = @search.result.page(params[:page]).per(50)
  rate
end

Qu'est-ce que cela signifie et comment puis-je résoudre ce problème?

85
THpubs

La taille de la condition de branche d'assignation (ABC) est une mesure de la taille d'une méthode. Il est essentiellement déterminé en comptant le nombre de [~ # ~] a [~ # ~] ssignments, [ ~ # ~] b [~ # ~] et [~ # ~] c [~ # ~] déclarations traditionnelles. (plus de détail ..)

Pour réduire la taille de ABC, vous pouvez déplacer certaines de ces affectations vers des appels before_action:

before_action :fetch_current_category, only: [:show,:edit,:update] 
before_action :fetch_categories, only: [:show,:edit,:update] 
before_action :fetch_search_results, only: [:show,:edit,:update] #or whatever

def show
  rate
end

private

def fetch_current_category
  @category = Category.friendly.find(params[:id])
end

def fetch_categories
  @categories = Category.all
end

def fetch_search_results
  @search = category.products.approved.order(updated_at: :desc).ransack(params[:q])
  @products = @search.result.page(params[:page]).per(50)
end
91
chad_