वस्तु-उन्मुख विश्लेषण और डिजाइन (OOAD) में अच्छा कैसे बनें?


26

एक अच्छा विश्लेषक और डिजाइनर बनने से एक डेवलपर को बहुत फायदा हो सकता है। लेकिन इसके लिए निश्चित रूप से बाधाएं हैं। हर कोई OOAD में दिलचस्पी नहीं रखता है, और हर व्यक्ति जो दिलचस्पी रखता है, वह रास्ता नहीं जानता है। क्या एक अच्छी OOAD को कई OO भाषाओं को जानना चाहिए? या उसे परियोजनाओं में असफल होना चाहिए? एक अच्छा OOAD कैसे बन सकता है?

जवाबों:


34

जो लोग रुचि नहीं ले रहे हैं वे अपनी बाधाएं पैदा कर रहे हैं। मैं इसके बारे में चिंता नहीं कर सकता।

जो लोग रास्ता नहीं जानते हैं, उनके लिए मैं सुझाव देता हूं:

  • मुझे लगता है कि मेरे द्वारा सीखी गई हर OO भाषा मुझे एक बेहतर OO डेवलपर बनाती है। जब तक आप समुदाय को पाते हैं, तब तक प्रत्येक भाषा से दूसरों में लाया जा सकता है।
  • आप सफलता से ज्यादा असफलता से सीखते हैं, लेकिन अपने समय पर ऐसा करने की कोशिश करते हैं। व्यावसायिक रूप से, अधिक अनुभव वाले लोगों पर भरोसा करें, कम से कम कुछ समय - लेकिन "क्यों?" पूछने से डरो मत।
  • सभी सॉलिड सिद्धांतों को जानें और समझें कि वे क्यों मौजूद हैं। उनमें से कोई भी नियम नहीं है, लेकिन जब आप खो जाते हैं तो वे अच्छे दिशानिर्देश होते हैं।
  • टेस्ट ड्रिवेन डेवलपमेंट ने मेरे ओओ डिज़ाइन कौशल में कुछ और सुधार किया है जो मैंने कभी सीखा है।
  • जब तक आप अंडरकंरिंग से ओवरइंजीनियरिंग के लिए नहीं चले जाते हैं, तब तक आपका सबसे अच्छा नहीं होगा और फिर सही संतुलन (उत्तरार्द्ध के करीब) पाया।
  • वास्तव में, खरोंच, आप कभी भी उतना अच्छा नहीं होंगे जितना आप दो साल बाद होंगे।
  • बहुत सी किताबें और ब्लॉग पढ़ें लेकिन सुसमाचार के रूप में कुछ भी नहीं लें। यह उद्योग अभी भी नहीं मिला है, और कभी भी सही मार्ग नहीं पा सकता है।
  • हर तरह से डिज़ाइन पैटर्न सीखें, लेकिन उनका उपयोग करने के लिए स्थानों की तलाश न करें, बस उन्हें संचार के लिए एक सुविधा के रूप में उपयोग करें।

आशा है कि कुछ मदद करता है।


1
अच्छी सूची @pdr +1
सईद नेमाटी

5
+1 "अभी भी नहीं मिला है, और कभी नहीं मिल सकता है, एक आदर्श मार्ग।"
ओसोडो

1
+1 "टेस्ट ड्रिवेन डेवलपमेंट ने मेरे ओओ डिज़ाइन कौशल में और अधिक सुधार किया है जो मैंने कभी भी सीखा है।"
केविन क्लाइन


धन्यवाद मेरे पास SOLID चर्चा प्रोग्रामर
stackexchange.com/questions/155852/…

5

मुझे लगता है कि OO मॉडल की पूरी तरह से सराहना करने के लिए , आपको गैर-OO प्रोग्रामिंग तकनीकों के साथ बुरी तरह असफल होने का अनुभव होना चाहिए। आप ओओ को अंदर और बाहर समझ सकते हैं, लेकिन इसकी सराहना और सम्मान करने के लिए, यह एक चमकदार नया उपकरण होना चाहिए जो पुराने जंग को बदल देता है जो काम नहीं करता था।

मैंने स्वयं को कॉलेज स्तर के जावा में ओओ सीखने से पहले 7 साल तक खुद को सिखाया। इससे पहले, मैं लगातार इन परियोजनाओं का निर्माण करूंगा, और वे इतने बड़े हो जाएंगे कि मैं भूल जाऊंगा कि बिल्ली क्या चल रही थी। मामूली बदलाव करने के लिए उन्हें भारी, असंगठित और बहुत अधिक रखरखाव की आवश्यकता होगी । मूल रूप से मैं अपने आप को अपने कोड से टकराता हुआ देखता रहा और लगातार नए सिरे से शुरू करता रहा।

मुझे अपना सिर रैखिक डिजाइन से बाहर निकालने में कुछ समय लगा, जिसे मैंने अपनाया था, लेकिन एक बार जब मैंने पूरी तरह से ओओ मॉडल को समझा तो यह यूरेका जैसा था! मैं विरासत के रूप में अवधारणाओं को सीखने के बाद छत के माध्यम से अपने दम पर और मेरी उत्पादकता पर अधिक जटिल परियोजनाओं को कोड करने में सक्षम था। मैं समय को फिर से लिखने का कोड बर्बाद नहीं कर रहा हूं या शुरू नहीं कर रहा हूं, क्योंकि उद्देश्यपूर्ण रूप से सब कुछ समझ में आता है और यह सिर्फ सहज है।

यह मेरा विचार है कि प्रत्येक प्रोग्रामर को जितनी हो सके उतनी भाषाओं को जानना चाहिए। यह उन्हें अधिक अनुभवी अनुभवी बना देगा, भले ही वह ओओ हो या नहीं। एक बार जब आप ओओ को समझते हैं, तो आप उन तकनीकों को ले सकते हैं और उन्हें हर जगह लागू कर सकते हैं जो वे लागू होते हैं।

IMHO, अगर आपको समझ में नहीं आता है, या OO सीखने की कोई इच्छा नहीं है, तो आप जीवन के युद्ध के मैदान में अपर्याप्त रूप से सुसज्जित होंगे। अधिक से अधिक कंपनियां नई OO भाषाओं का उपयोग कर रही हैं। मुझे इस दिन उम्र में ओओ मॉडल नहीं जानने का कोई कारण नहीं दिखता है ।

व्यक्ति कैसे सीखता है, इस पर निर्भर करते हुए, यह उनके ऊपर है कि वे कैसे मॉडल सीखना चाहते हैं। मैं व्यक्तिगत रूप से सबसे अच्छा सीखता हूं जब कोई मुझे सिखाता है, और इसलिए जावा I और जावा II के लिए कक्षा में जाना वास्तव में मेरे लिए एक बड़ा अंतर था। मैं कॉलेज में सॉफ्टवेयर इंजीनियरिंग ऐच्छिक लेने की सलाह दूंगा, या बस ऑनलाइन जा रहा हूं और ओओ ट्यूटोरियल की तलाश कर रहा हूं यदि आपके पास कॉलेज के पाठ्यक्रमों तक पहुंच नहीं है या आप अपने खाली समय में सीखना चाहते हैं।

जब मैं वापस सोचता हूं कि यह मेरे लिए कैसे वर्णित था, तो मैं कहता हूं; एक सेब एक सेब है, और एक नारंगी एक नारंगी है। हां, वे दोनों पेड़ों से गिरते हैं, लेकिन वे दो बिल्कुल अलग फल हैं और आपके सद्भाव में निहित हैं।


1
क्या आपका मतलब कार्यात्मक प्रोग्रामिंग के साथ बुरी तरह से असफल होना है, या प्रक्रियात्मक प्रोग्रामिंग के साथ बुरी तरह से असफल होना है?
एंड्रयू ग्रिम

कार्यात्मक प्रोग्रामिंग के साथ बुरी तरह से असफल, लेकिन महारत में असफल नहीं। मेरा मतलब है कि अपनी सीमाओं के कारण सफल कार्यान्वयन में असफल होना।
स्टेलर

तो आप निश्चित रूप से कार्यात्मक प्रोग्रामिंग का मतलब है, प्रक्रियात्मक प्रोग्रामिंग नहीं?
एंड्रयू ग्रिम

गैर OO प्रोग्रामिंग।
स्टाइलर

2
मैं निश्चित रूप से इसे संपादित करने का सुझाव दूंगा, क्योंकि गैर-ओओ! = कल्पना के किसी भी खंड द्वारा कार्यात्मक। बातें दोनों भी हो सकती हैं।
मगस

0

रुचि रखने वालों के लिए हमेशा बाधाएं होती हैं या नहीं लेकिन संदर्भ और गंभीरता भिन्न हो सकती है।

यह आवश्यक नहीं है कि आपको OO अवधारणाओं के लिए कई भाषाएं सीखने की जरूरत है, एक भाषा से शुरू करें जो आपको पसंद है, कुछ समय के लिए आपको भाषा पर एक मजबूत पैर जमाना होगा, कुछ चीजों का पता लगाने के लिए यह संभव है जो आपने किया है पहले से ही और एक अलग भाषा पर एक ही निष्पादित करने का प्रयास करें। एक भाषा में विशेषज्ञता नए को बदलने में मदद करती है क्योंकि आपके पास एक बेंचमार्क होगा।

कोई भी परियोजना अपनी सफलता के बजाय एक सीखने का अनुभव है जो आपके लिए सबसे महत्वपूर्ण है कि आपने अपने सबसे अच्छे उपयोग के लिए सुविधाओं को कितनी अच्छी तरह से अनुकूलित किया है, कभी-कभी दूसरों को कोड पढ़ने के लिए अच्छा है और यह कैसे और क्यों किया। यदि आप एक संरक्षक प्राप्त कर सकते हैं जो महान होगा। हमेशा इसका कारण जानें कि यह क्यों चुना गया है , इसे किसी अन्य तरीके से कैसे किया जाए। अपने स्वयं के तर्क और डिजाइन मॉडल पर काम करने की कोशिश करें और इसे अपने वरिष्ठ / संरक्षक को दें। इस तरह आप अपने कौशल में सुधार कर रहे होंगे, हो सकता है कि शुरुआत में वे सीधे कूड़ेदान में चले जाएं लेकिन तब आपने प्रयास किया और सीखा कि आपने क्या गलत किया है। आप बेहतर और बेहतर होगा।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.