এই প্রশ্নটি কিছুটা ভাষা-অজ্ঞাতিক, তবে পুরোপুরি নয়, যেহেতু অবজেক্ট ওরিয়েন্টেড প্রোগ্রামিং (ওওপি) এর মধ্যে পৃথক, উদাহরণস্বরূপ, জাভা , যা পাইথনের চেয়ে ফার্স্ট-ক্লাস ফাংশনগুলি রাখে না ।
অন্য কথায়, জাভার মতো ভাষায় অপ্রয়োজনীয় ক্লাস তৈরি করার জন্য আমি কম অপরাধী বোধ করি তবে আমার মনে হয় পাইথনের মতো কম বয়লারপ্লেট-y ভাষায় আরও ভাল উপায় থাকতে পারে।
আমার প্রোগ্রামটি বেশ কয়েকবার তুলনামূলকভাবে জটিল অপারেশন করা দরকার। এই অপারেশনের জন্য প্রচুর "বুককিপিং" দরকার, কিছু অস্থায়ী ফাইল ইত্যাদি তৈরি করতে এবং মুছতে হয় etc.
এজন্য এটিকে আরও অনেকগুলি "suboperation" কল করতে হবে - সবকিছুকে একটি বিশাল পদ্ধতিতে স্থাপন করা খুব সুন্দর, মডুলার, পঠনযোগ্য ইত্যাদি নয় isn't
এখন এগুলি আমার মনে আসে এমন পদ্ধতিগুলি:
১. এমন একটি শ্রেণি তৈরি করুন যার কেবলমাত্র একটি পাবলিক পদ্ধতি রয়েছে এবং সাবোপেশনগুলির জন্য প্রয়োজনীয় অভ্যন্তরীণ পরিস্থিতিকে তার ভেরিয়েবলগুলিতে রাখে।
এটি দেখতে এমন কিছু লাগবে:
class Thing:
def __init__(self, var1, var2):
self.var1 = var1
self.var2 = var2
self.var3 = []
def the_public_method(self, param1, param2):
self.var4 = param1
self.var5 = param2
self.var6 = param1 + param2 * self.var1
self.__suboperation1()
self.__suboperation2()
self.__suboperation3()
def __suboperation1(self):
# Do something with self.var1, self.var2, self.var6
# Do something with the result and self.var3
# self.var7 = something
# ...
self.__suboperation4()
self.__suboperation5()
# ...
def suboperation2(self):
# Uses self.var1 and self.var3
# ...
# etc.
এই পদ্ধতির সাথে আমি যে সমস্যাটি দেখছি তা হ'ল এই শ্রেণীর অবস্থা কেবল অভ্যন্তরীণভাবেই বোধ করে এবং এটি তাদের একমাত্র সর্বজনীন পদ্ধতির কল ব্যতীত এর উদাহরণগুলির সাথে কিছুই করতে পারে না।
# Make a thing object
thing = Thing(1,2)
# Call the only method you can call
thing.the_public_method(3,4)
# You don't need thing anymore
২. একটি ক্লাস ছাড়াই একগুচ্ছ ফাংশন তৈরি করুন এবং তাদের মধ্যে অভ্যন্তরীণভাবে প্রয়োজনীয় বিভিন্ন পরিবর্তনশীল (তর্ক হিসাবে) পাস করুন।
আমি এটির সাথে যে সমস্যাটি দেখছি তা হ'ল আমাকে ফাংশনের মধ্যে প্রচুর ভেরিয়েবল পাস করতে হবে। এছাড়াও, ফাংশনগুলি একে অপরের সাথে ঘনিষ্ঠভাবে সম্পর্কিত হবে তবে সেগুলি একসাথে ভাগ করা হবে না।
৩. এর মতো ২. তবে রাষ্ট্রগুলি পরিবর্তন করার পরিবর্তে বৈশ্বিক পরিবর্তন করুন।
এটি মোটেও ভাল হবে না, যেহেতু বিভিন্ন ইনপুট দিয়ে আমাকে একাধিকবার অপারেশন করতে হবে।
চতুর্থ, আরও ভাল, পদ্ধতির আছে? যদি তা না হয় তবে এর মধ্যে কোন একটি পদ্ধতির ভাল হবে এবং কেন? আমি কি অনুপস্থিত কিছু আছে?