Что означает "Слишком высокий размер условия ветки" и как его исправить?

В моем приложении Rails я использую Rubocop для проверки проблем. Сегодня он дал мне такую ​​ошибку: Assignment Branch Condition size for show is too high. Здесь мой код:

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

Что это значит и как я могу его исправить?

+90
источник поделиться
1 ответ

Размер условия ветки назначения (ABC) - это измерение размера метода. По сути, это определяется путем подсчета количества A подписей, B ранчо и C условных заявлений. (подробнее..)

Чтобы уменьшить оценку ABC, вы можете переместить некоторые из этих назначений в вызовы 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
+92
источник

Посмотрите другие вопросы по меткам или Задайте вопрос