2015-06-19 41 views
47

, ben sorunları denetlemek için Rubocop kullanın. Bugün bana böyle bir hata verdi: Assignment Branch Condition size for show is too high. İşte kodum:'Atama Şube Durum Büyüklüğü çok yüksek' ile kastedilen nedir ve nasıl düzeltilir? Benim Raylar uygulamasında

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 

Bu ne anlama geliyor ve nasıl düzeltebilirim?

+6

kısa arama ortaya çıkarır [bu] (http://c2.com/cgi/wiki?AbcMetric). Bu, rubocop'un "yönteminizin çok fazla" olduğunu söyleyen resmi bir yoludur. –

+0

Tanımlanmış değişkenlerin tümü oluşturmada mı kullanılıyor? –

cevap

49

Atama Şube Durumu (ABC) boyutu bir yöntemin boyutunun bir ölçüsüdür. Esas olarak, A ssignments, B çiftliklerinin sayısı ve C onditional ifadeleri sayılarak belirlenir.

(more detail..) ABC boyutunu küçültmek için, before_action çağrıları içine o atamaların bazı hareket olabilir:

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 
+0

Harika teşekkürler. Şimdi kod çok okunabilir görünüyor ama dosya büyük değil mi? Daha fazla kod? İyi mi? – THpubs

+0

Diğer değişkenlerde bu değişkenlere ihtiyacınız varsa daha az kod. –

+0

İnceleme için teşekkürler. https://hub.codebeat.co/docs/software-quality-metrics#assignment-branch-condition –