'এসাইনমেন্ট শাখার শর্তের আকার খুব বেশি' বলতে কী বোঝায় এবং কীভাবে এটি ঠিক করবেন?


112

আমার রেল অ্যাপগুলিতে, আমি 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

এর অর্থ কী এবং আমি কীভাবে এটি ঠিক করতে পারি?


9
একটি সংক্ষিপ্ত অনুসন্ধান এটিকে উদঘাটন করে । এটি rubocop"আপনার পদ্ধতিটি খুব বেশি করে" বলার একটি আনুষ্ঠানিক উপায়।
ডি-সাইড

সংজ্ঞায়িত সমস্ত ভেরিয়েবলগুলি কি রেন্ডারিংয়ে ব্যবহৃত হয়?
এন্টার বাইার্ড

উত্তর:


114

অ্যাসাইনমেন্ট শাখা শর্ত (এবিসি) আকার একটি পদ্ধতির আকারের একটি পরিমাপ। এটি মূলত সিগনমেন্টস, বি র‌্যাঙ্কস এবং সি অপারেশনাল স্টেটমেন্টগুলির সংখ্যা গণনা করে নির্ধারিত হয় । (আরো বিস্তারিত..)

এবিসি স্কোর হ্রাস করার জন্য, আপনি সেই কিছু অ্যাসাইনমেন্টকে পূর্বের ক্রিয়াকলাপে সরিয়ে নিতে পারেন:

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

1
দুর্দান্ত ধন্যবাদ এখন কোডটি অনেক বেশি পঠনযোগ্য মনে হচ্ছে তবে এটি ফাইলটি বড় করে দিচ্ছে না? আরও কোড? এটা কি ভালো?
THPubs

অন্যান্য ক্রিয়ায় আপনার যদি সেই ভেরিয়েবলগুলির প্রয়োজন হয় তবে কম কোড।
চাদ_

2
ধন্যবাদ। আমি এটি উইকিপিডিয়ায় দেখিয়েছি। এটি আরও কিছুটা নির্ভরযোগ্য হওয়া উচিত, আমি আশা করি।
চাদ_

আমি এই পদ্ধতিতে একই পাচ্ছি: # ডিভাইস প্রসঙ্গে ডিফ ড্র (ডিসি) ডিসি.সেটফোরগ্রাউন্ড (রঙ) dc.fillArc (x, y, w, h, 0, 64 * 90) ডিসি.ফিলআরসিএল (বল) x, y, w, h, 64 * 90, 64 * 180) dc.fillArc (x, y, w, h, 64 * 180, 64 * 270) dc.fillArc (x, y, w, h, 64 * 270, 64 * 360) শেষ আমি এখানে কোড ব্লক বিন্যাস সংরক্ষণ করতে সক্ষম হবে বলে মনে হচ্ছে না !!! এখানে কি হচ্ছে? এখানে কোনও অ্যাসাইনমেন্ট নেই, শাখা নেই, এবং কোনও শর্ত নেই !!!!
ফ্লাজান

আপনার সংখ্যা রয়েছে যেখানে আপনি সংখ্যাটি গুণ করছেন imp আমি তাদের নিয়ে গিয়ে তাদের ধ্রুবকগুলিতে স্থানান্তরিত করব যাতে আপনি সেই কলগুলিতে একই গাণিতিকটির পুনরায় মূল্যায়ন না করেন। আমি নিশ্চিত নই যে এটি আপনার লিটারের প্রতিক্রিয়া ঠিক করবে কিনা তবে এটি অবশ্যই এটি একটি সামান্য কিছুটা সাফ করবে। :)
চাদ_
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.