चूंकि आप एक पेशेवर प्रोग्रामर नहीं हैं, इसलिए मैं आपको सादगी से चिपके रहने की सलाह दूंगा। प्रोग्रामर के लिए आपके मॉड्यूलर, प्रक्रियात्मक कोड को लेना और बाद में इसे OO बनाना आसान होगा, क्योंकि यह उनके लिए एक बुरा लिखित OO प्रोग्राम को ठीक करने के लिए होगा। यदि आप अनुभवी नहीं हैं, तो OO प्रोग्राम बनाना संभव है जो एक अपवित्र गंदगी में बदल सकता है जो न तो आपकी मदद करेगा और न ही आपके बाद जो आएगा।
मुझे लगता है कि आपकी पहली वृत्ति, "यह बात-वह बात" पहले उदाहरण में कोड सही ट्रैक है। यह स्पष्ट और स्पष्ट है कि आप क्या करना चाहते हैं। कोड दक्षता के बारे में बहुत ज्यादा चिंता न करें, स्पष्टता अधिक महत्वपूर्ण है।
यदि एक कोड सेगमेंट बहुत लंबा है, तो इसे काटने के आकार के टुकड़ों में तोड़ दें, प्रत्येक का अपना कार्य है। यदि यह बहुत छोटा है, तो कम मॉड्यूल का उपयोग करने और लाइन में अधिक डालने पर विचार करें।
---- पोस्टस्क्रिप्ट: OO डिजाइन जाल
OO प्रोग्रामिंग के साथ सफलतापूर्वक काम करना मुश्किल हो सकता है। यहां तक कि कुछ लोग हैं जो पूरे मॉडल को दोषपूर्ण मानते हैं। एक बहुत अच्छी किताब है जिसका इस्तेमाल मैंने पहली बार ओओ प्रोग्रामिंग को थिंकिंग इन जावा (अब इसके 4 वें संस्करण में) कहा है। उसी लेखक के पास C ++ के लिए एक संबंधित पुस्तक है। ऑब्जेक्ट ओरिएंटेड प्रोग्रामिंग में सामान्य नुकसान से निपटने वाले प्रोग्रामर पर वास्तव में एक और सवाल है ।
कुछ नुकसान परिष्कृत हैं, लेकिन बहुत बुनियादी तरीकों से समस्याएं पैदा करने के बहुत सारे तरीके हैं। उदाहरण के लिए, कुछ साल पहले मेरी कंपनी में एक इंटर्न था जिसने कुछ सॉफ्टवेयर का पहला संस्करण लिखा था जो मुझे विरासत में मिला था और उसने हर उस चीज़ के लिए इंटरफेस बनाया जो शायद होकिसी दिन कई कार्यान्वयन होते हैं। बेशक, 98% मामलों में केवल एक ही कार्यान्वयन था, इसलिए कोड को अप्रयुक्त इंटरफेस के साथ लोड किया गया था, जो डीबगिंग को बहुत कष्टप्रद बनाता था क्योंकि आप इंटरफ़ेस कॉल के माध्यम से वापस कदम नहीं उठा सकते हैं, इसलिए आपको अंत करना होगा कार्यान्वयन के लिए पाठ खोज (हालांकि अब मैं IntelliJ का उपयोग करता हूं, "शो ऑल इम्प्लीमेंटेशन" सुविधा थी, लेकिन दिन में वापस मेरे पास ऐसा नहीं था)। यहां का नियम प्रक्रियात्मक प्रोग्रामिंग के लिए समान है: हमेशा एक चीज को हार्डकोड करें। केवल जब आपके पास दो या अधिक चीजें हों, तो एक अमूर्त बनाएं।
जावा स्विंग एपीआई में इसी तरह का डिज़ाइन ब्लंडर पाया जा सकता है। वे स्विंग मेनू सिस्टम के लिए एक प्रकाशन-सदस्यता मॉडल का उपयोग करते हैं। यह एक पूर्ण दुःस्वप्न स्विंग बनाने और डिबगिंग मेनू बनाता है। विडंबना यह है कि यह पूरी तरह से व्यर्थ है। वस्तुतः कभी भी ऐसी स्थिति नहीं होती है जिसमें एक मेनू क्लिक पर कई कार्यों को "सदस्यता" देने की आवश्यकता होती है। इसके अलावा, प्रकाशित-सदस्यता वहाँ एक पूर्ण मिसफायर थी क्योंकि एक मेनू सिस्टम सामान्य रूप से हमेशा उपयोग में रहता है। यह ऐसा नहीं है कि फ़ंक्शंस सदस्यता ले रहे हैं और फिर बेतरतीब ढंग से सदस्यता समाप्त कर रहे हैं। तथ्य यह है कि सन में "पेशेवर" डेवलपर्स ने इस तरह से एक विस्फोट किया, यह दर्शाता है कि ओओ डिजाइन में स्मारकीय स्क्रू अप बनाने के लिए पेशेवरों के लिए यह कितना आसान है।
मैं ओओ प्रोग्रामिंग में दशकों के अनुभव के साथ एक बहुत ही विशेषज्ञ डेवलपर हूं, लेकिन यहां तक कि मैं पहली बार मानता हूं कि टन मुझे नहीं पता है और अब भी मैं बहुत अधिक ओओ का उपयोग करने के बारे में सतर्क हूं। मैं एक सहकर्मी से लंबे व्याख्यान सुनता था, जो विशेष डिजाइन करने के तरीके के बारे में एक ओओ जोलेट था। वह वास्तव में जानता था कि वह क्या कर रहा था, लेकिन सभी ईमानदारी से मुझे उनके कार्यक्रमों को समझने में एक कठिन समय था क्योंकि उनके पास ऐसे परिष्कृत डिजाइन मॉडल थे।