यह सवाल कुछ हद तक भाषा-अज्ञेयवादी है, लेकिन पूरी तरह से नहीं है, क्योंकि ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग (ओओपी) अलग है, उदाहरण के लिए, जावा , जिसमें प्रथम श्रेणी के कार्य नहीं हैं, यह पायथन में है ।
दूसरे शब्दों में, मैं जावा जैसी भाषा में अनावश्यक कक्षाएं बनाने के लिए कम दोषी महसूस करता हूं, लेकिन मुझे ऐसा लगता है कि पायथन जैसे कम बॉयलरप्लेट-वाई भाषाओं में बेहतर तरीका हो सकता है।
मेरे कार्यक्रम को कई बार एक अपेक्षाकृत जटिल ऑपरेशन करने की आवश्यकता है। उस ऑपरेशन के लिए "बहीखाता" की बहुत आवश्यकता होती है, कुछ अस्थायी फ़ाइलों को बनाने और हटाने के लिए, आदि।
इसलिए इसे बहुत सारे अन्य "सबऑपरेशंस" को कॉल करने की आवश्यकता है - सब कुछ एक विशाल विधि में डालना बहुत अच्छा नहीं है, मॉड्यूलर, रीडिंग, आदि।
अब ये मेरे मन में आने वाले दृष्टिकोण हैं:
1. एक ऐसी कक्षा बनाएं जिसमें केवल एक सार्वजनिक विधि हो और आंतरिक उदाहरणों के लिए आवश्यक आंतरिक अवस्था को इसके उदाहरण चर में रखे।
यह कुछ इस तरह दिखेगा:
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
2. एक वर्ग के बिना कार्यों का एक गुच्छा बनाएं और उनके बीच विभिन्न आंतरिक रूप से आवश्यक चर पास करें (तर्क के रूप में)।
मैं इसके साथ जो समस्या देख रहा हूं वह यह है कि मुझे फंक्शन्स के बीच बहुत सारे वैरिएबल पास करने होंगे। इसके अलावा, फ़ंक्शन एक-दूसरे के साथ निकटता से संबंधित होंगे, लेकिन वे एक साथ समूहीकृत नहीं होंगे।
3. जैसे - लेकिन राज्य चर को पार करने के बजाय वैश्विक बनाते हैं।
यह बिल्कुल अच्छा नहीं होगा, क्योंकि मुझे अलग-अलग इनपुट के साथ एक से अधिक बार ऑपरेशन करना होगा।
क्या कोई चौथा, बेहतर, दृष्टिकोण है? यदि नहीं, तो इनमें से कौन सा दृष्टिकोण बेहतर होगा और क्यों? क्या मुझे कुछ याद आ रहा है?