পটভূমি:
আমার একটি মডিউল রয়েছে যা বেশ কয়েকটি উদাহরণ পদ্ধতি ঘোষণা করে
module UsefulThings
def get_file; ...
def delete_file; ...
def format_text(x); ...
end
এবং আমি ক্লাসের মধ্যে থেকে এই পদ্ধতিগুলির কয়েকটি কল করতে চাই। আপনি রুবিতে সাধারণত কীভাবে এটি করেন তা হ'ল:
class UsefulWorker
include UsefulThings
def do_work
format_text("abc")
...
end
end
সমস্যা
include UsefulThingsথেকে সমস্ত পদ্ধতি এনেছে UsefulThings। এই ক্ষেত্রে আমি কেবল চাই format_textএবং স্পষ্টতই চাই না get_fileএবং চাই delete_file।
আমি এর বেশ কয়েকটি সম্ভাব্য সমাধান দেখতে পাচ্ছি:
- কোনওভাবে এটিকে কোথাও না জুড়ে সরাসরি মডিউলটিতে সরাসরি অনুরোধ করুন
- আমি জানি না কীভাবে / যদি এটি করা যায়। (সুতরাং এই প্রশ্ন)
- একরকম অন্তর্ভুক্ত করুন
Usefulthingsএবং কেবল এর কিছু পদ্ধতি আনুন- কীভাবে / যদি এটি করা যায় তবে আমি জানি না
- একটি প্রক্সি ক্লাস তৈরি করুন, এতে অন্তর্ভুক্ত করুন
UsefulThings, তারপরেformat_textসেই প্রক্সি উদাহরণটিতে প্রতিনিধিত্ব করুন- এটি কাজ করবে তবে বেনামে প্রক্সি ক্লাসগুলি হ্যাক। ইশ।
- মডিউলটি 2 বা ততোধিক ছোট মডিউলে বিভক্ত করুন
- এটিও কাজ করবে, এবং সম্ভবত আমি সবচেয়ে ভাল সমাধানটি ভাবতে পারি, তবে আমি এড়াতে পছন্দ করতাম কারণ আমি কয়েক ডজন এবং কয়েক ডজন মডিউলের বিস্তার লাভ করতাম - এটি পরিচালনা করা ভারী হবে d
কেন একটি একক মডিউলে প্রচুর সম্পর্কযুক্ত ফাংশন রয়েছে? এটি ApplicationHelperএকটি রেল অ্যাপ্লিকেশন থেকে এসেছে, যা আমাদের দল ডি-ফ্যাক্টো সিদ্ধান্ত নিয়েছে যে অন্য কোথাও থাকার মতো নির্দিষ্ট নির্দিষ্ট কিছু নয় বলে ডাম্পিং গ্রাউন্ড হিসাবে সিদ্ধান্ত নিয়েছে। বেশিরভাগ ক্ষেত্রে স্বতন্ত্র ইউটিলিটি পদ্ধতি যা সর্বত্র ব্যবহৃত হয়। আমি এটিকে পৃথক সহায়কদের মধ্যে ভেঙে ফেলতে পারতাম, তবে তাদের মধ্যে ৩০ জন থাকত, প্রত্যেকে ১ টি পদ্ধতি দিয়ে ... এটি অনুৎপর বলে মনে হচ্ছে
module UT; def add1; self+1; end; def add2; self+2; end; endএবং আপনি ব্যবহার করতে চান add1তবে add2শ্রেণিতে নয় Fixnum। এটির জন্য মডিউল ফাংশনগুলি কীভাবে সহায়তা করবে? আমি কিছু অনুপস্থিত করছি?
Module#includedঅন্যটির একটি ট্রিগার করতে কলব্যাক ব্যবহার করে অন্যটিকে অন্তর্ভুক্ত করেinclude।format_textপদ্ধতি, এটা নিজস্ব মডিউল মধ্যে স্থানান্তরিত করা যেতে পারে যেহেতু এটি তে এটি নিজের ব্যাপার দরকারী বলে মনে হয়। এটি ম্যানেজমেন্টকে কিছুটা কম বোঝা করে তোলে।