क्या ओओपी की अधिक जटिलता के लिए एक शब्द है?


18

एक या दो साल पहले मैंने ओओपी (जावा) पर एक उत्कृष्ट लेख देखा, जिसमें कोड के दो या तीन लाइनों के एक सरल ठोस लकड़हारे की प्रगति दिखाई दी, और अनुभवहीन डेवलपर द्वारा एक सैद्धांतिक अत्यधिक विचार प्रक्रियाएं जो मूल रूप से ओह कहती हैं , मुझे चाहिए इस मामले में हम कभी ऐसा चाहते हैं! लेख के अंत तक यह सरल लकड़हारा कचरे का एक विशाल गड़बड़ था जिसे मूल डेवलपर शायद ही खुद को समझ सके ...

क्या इस प्रकार की अति-जटिलता के लिए एक सामान्य शब्द है? वह लेख (जो मुझे प्रियतमा की इच्छा है कि मैं फिर से पा सकता हूं) एक अलग मामले के लिए अवधारणा को आश्चर्यजनक रूप से दिखाता है, लेकिन मैं पूरी परियोजनाओं में आया हूं, जहां डेवलपर्स ने अनिवार्य रूप से पैटर्न, फ्रेमवर्क, पुस्तकालयों के अति-उपयोग द्वारा खुद को गाँठ में क्रमादेशित किया था और अन्य मामले। अपने तरीके से, यह विरासत VB6 स्पेगेटी ऐप्स की तुलना में उतना ही बुरा (या इससे भी बुरा) है जो हमें प्रतिस्थापन के लिए विरासत में मिला है।

क्या मैं वास्तव में देख रहा हूँ जब साक्षात्कार के लिए इसे लाने के लिए है। मैं जानना चाहता हूं कि यदि कोई व्यक्ति इस बात से अवगत और सचेत है कि वास्तु / पूर्व-नियोजन की कमी के साथ इस में गिरना कितना आसान है (और इस बात के लिए गिर गया कि क्या वे सही संतुलन बना रहे हैं), लेकिन यह वास्तव में कुछ नहीं है मुझे बहुत सी जानकारी मिल सकती है।


25
हाँ, इसे OOP कहा जाता है।
बाग़

जवाबों:


28

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

एक अधिक सामान्य स्तर पर, जोएल स्पोल्स्की ने ऐसे डिजाइनरों को दिया, जिन्होंने वास्तुशिल्प डिजाइन को " वास्तुकला अंतरिक्ष यात्रियों " के नाम से जाना ।

हालांकि, विशेष रूप से एक साक्षात्कार के लिए, मुझे लगता है कि यह जानना अधिक महत्वपूर्ण है कि विपरीत क्या कहा जाता है, केवल चीजों को एक डिजाइन में डालना जो वास्तव में आवश्यक हैं और अस्वस्थ "सिर्फ मामले में" दृष्टिकोण के बारे में भूल जाते हैं - इसे YAGNI सिद्धांत कहा जाता है ।


धन्यवाद। मैं YAGNI का बड़ा अधिवक्ता हूं, निश्चित नहीं था कि अगर कोई विपरीत था।
jleach

मैं इस बात पर जोर दूंगा कि याग्नी "अभी वास्तव में क्या जरूरत है" के बारे में है। आपको अभी भी चीजों को छोड़ देना चाहिए, भले ही यह पता हो कि इसकी आवश्यकता बाद में होगी, क्योंकि अभी इसकी आवश्यकता नहीं है।
बेंट

7
@ मुझे यह भी तनाव होगा कि इसका मतलब यह नहीं है कि आप उन चीजों / बदलावों को पूरी तरह से नजरअंदाज कर दें, जिन्हें आप निश्चित रूप से जानते हैं। परिवर्तन की धुरी के साथ आसानी से प्रतिक्रियाशील।
बकुरीउ

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

4

हां, इसका वर्णन करने के लिए अतिरंजना सबसे सरल शब्द है। मैंने वर्षों में जितनी बार याद किया है, उससे अधिक बार अनावश्यक रूप से जटिल डिजाइनों को देखा है। कई साल जब एक Microsoft GWBasic पाठ्यक्रम लेने पहले प्रशिक्षक बार-बार KISS विधि (यह सरल बेवकूफ रखें) ठोक। यह आज भी उतना ही सच है जितना तब था।

इसलिए मैं हमेशा KISS याद है और हमेशा के साथ डिजाइन ठोस सिद्धांतों को ध्यान में। लेकिन कहा जा रहा है के साथ, यह अभी भी संभव है कि SOLID सिद्धांतों के साथ एक डिजाइन को पूरी तरह से माना जाता है। आपको एक सामान्य ज्ञान को संतुलित करना होगा, शुद्ध होने की इच्छा के साथ व्यावहारिक दृष्टिकोण और आम तौर पर स्वीकार्य ओओपी दिशानिर्देशों का पालन करना होगा। यदि आपको पर्याप्त समय दिया जाता है और यदि आप जटिल समाधान बनाना पसंद करते हैं, तो आप स्केटबोर्ड के लिए एक इंजन को डिजाइन करने का मार्ग समाप्त कर सकते हैं क्योंकि आपने सोचा था कि यह अंततः कार में बदल जाएगा। सौभाग्य से, मुझे वर्षों से ऐसा नहीं करने के लिए अनुशासित किया गया है, लेकिन मैंने इसे कई बार देखा है।

ताकि कोड की अधिकता को रोकने के लिए संक्षेप में प्रस्तुत किया जा सके:

1) KISS (यह सरल बेवकूफ रखें)

2) मन में व्यावहारिकता के साथ ठोस सिद्धांतों का पालन करें।

3) हर घटना के लिए डिजाइन करने की कोशिश मत करो। और कभी-कभी छोटे, टपका हुआ अमूर्त भयानक चीजें नहीं होती हैं, अगर उन्हें अलग-थलग, जानबूझकर किया जाता है, और अगर उन्हें रोकने के लिए प्रयास उन्हें रखने के प्रभावों को प्रभावित करते हैं।

4) उन्हें डिजाइन करते समय समाधान के कार्यान्वयन पर विचार करें। आप बस यह नहीं कह सकते हैं, "ओह, यह एक कार्यान्वयन विवरण है", और मान लें कि आपका डिज़ाइन व्यावहारिक है। मैं एक वास्तुकार के साथ काम करता था जो अक्सर ऐसा करता था, और अफसोस, उसके डिजाइनों ने कभी काम नहीं किया, और परिणामस्वरूप, मैं अब वहां काम नहीं करता।

5) कोड मानो आप एक हैं जो इसे बनाए रखने वाले हैं।


-3

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

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


4
मुझे खेद है, लेकिन मैं वास्तव में सोच रहा था कि क्या इसके लिए कोई शब्द था। मैं साक्षात्कार का संचालन करने के तरीके के बारे में सलाह नहीं ले रहा था (या मेरे प्रश्न को किसी भी तरह से माना जाए कि मैं साक्षात्कार कैसे आयोजित करूंगा)। हालांकि आपकी चिंता के लिए धन्यवाद ...
jleach

1
ठीक है, आपने अपने प्रश्न में वह अंतिम पैराग्राफ लिखा है जिसे नजरअंदाज करना काफी कठिन है और एक कथन है। यदि आप अपने पाठ के कुछ हिस्सों पर प्रतिक्रिया की सराहना नहीं करते हैं तो आप जो कुछ भी डालते हैं उसमें अधिक प्रतिबंधक हो सकते हैं।
मार्टिन मात
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.