উদ্বেগ একটি সহজ কিন্তু শক্তিশালী ধারণা। কোড পুনরায় ব্যবহারযোগ্যতার জন্য এটি বিদ্যমান। মূলত, ধারণাটি হ'ল মডেলগুলি পরিষ্কার করতে এবং সেগুলি অত্যধিক চর্বিযুক্ত এবং নিয়ন্ত্রণহীন হওয়া এড়াতে সাধারণ এবং / অথবা প্রসঙ্গের নির্দিষ্ট কোডগুলির অংশ বের করা।
আমি স্পষ্ট করে উল্লেখ করতে চাই যে নির্দিষ্ট কার্যকারিতা নয় এমন কার্যকারিতা সরবরাহ করার জন্য আপনার পরিষেবা বিষয়গুলি ব্যবহার করা উচিত। যেমন একটি প্রতিষ্ঠানের অনেক ব্যবহারকারী রয়েছে। এখন সংগঠনের প্রশাসককে এই সংস্থার জন্য সমস্ত ব্যবহারকারীর একটি সিএসভি রফতানি করতে হবে। এই কোডটি সংস্থার মডেলটিতে স্থাপন করা যেতে পারে তবে যেহেতু এটি সংস্থাটির আপত্তিটির দায়িত্ব নয়, এই কোডটি এমন একটি শ্রেণিতে স্থাপন করা উচিত যেখানে আপনি কেবল সংগঠন অবজেক্টটি পাস করেন এবং এটি সমস্ত ব্যবহারকারীর সিএসভি ফিরিয়ে দেয়।
class Services::GenerateCsv
def self.get_users org
#add logic the fetch users for the org and generate the CSV and return the CSV data
end
end
যখনই আপনার সিএসভি প্রজন্মের প্রয়োজন হবে আপনি সেই যুক্তিটিকে উপরের শ্রেণিতে রাখতে পারেন। এই পদ্ধতির কোডটি থেকে এই বিষয়টিকে (এই ক্ষেত্রে সংস্থার মডেল) পরিষ্কার রাখা হয়েছে যা তার দায়িত্ব হওয়া উচিত নয়। একটি সাধারণ নীতি যা আমি অনুসরণ করি তা হ'ল: কোডটি যদি এটি স্ব-বস্তুটি সংশোধন করে তবে কোডটি কোনও পরিষেবা বস্তুতে সরান।
দ্রষ্টব্য: আপনার প্রশ্ন উদ্বেগ সম্পর্কিত ছিল তবে আমি কোড বেস পরিষ্কার ও পরিচালনাযোগ্য রাখার জন্য অনুসরণ করা কিছু অতিরিক্ত জিনিস যুক্ত করার কথা ভেবেছিলাম কারণ এটি সহযোগী প্রোগ্রামারদের সহায়তা করতে পারে। উপরোক্ত পদ্ধতির বিষয়টি বিতর্কযোগ্য।