क्या परिदृश्य का वर्णन करने के लिए एक औपचारिक पैटर्न है?


10

कुछ कोड एक्सेल स्प्रेडशीट (ऑफिस इंटरोप) जेनरेट करने के लिए लिखे गए हैं।

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

यह एक समस्या के लिए उबलता है। मूल कोड उत्पादन वातावरण में चलाने के लिए बहुत खराब प्रदर्शन करता है।

अगर प्रदर्शन की समस्या हल हो गई होती, तो सबसिस्टम और बाद में संग्रह करने वाली प्रणाली, "फाइल पिकर फैक्ट्री फंक्शन", हार्ड कोडित विफलता बिंदु और निर्धारित कार्य के रखरखाव और इसकी विफलता के अतिरिक्त बिंदु को मौजूद होने की कोई आवश्यकता नहीं है।

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


1
कोड जो स्केलेबल नहीं है? यदि आपका होस्टिंग प्रदाता एक महीने में व्यवसाय से बाहर हो रहा था और आपको उत्पादन वातावरण को नए सर्वरों में स्थानांतरित करने की आवश्यकता है, तो क्या यह सॉफ्टवेयर रिलीज और सामान्य आपातकालीन आतंक की आवश्यकता का गठन करेगा? मुझे लगता है कि आप उत्तर जानते ...
maple_shaft

1
वाह, यह एक रिपोर्ट जनरेटर ऐप जैसा लगता है जो मैंने लगभग 12 साल पहले लिखा था। एक कॉन्फिग की कमी और हार्ड कोडिंग को छोड़कर। संग्रह करना एक कानूनी आवश्यकता हो सकती है जैसे यह मेरे लिए था, वैसे भी बेकार है लेकिन इसकी आवश्यकता है। प्रदर्शन पहले खराब था, लेकिन एक उचित रूप से अनुकूलित अलग रिपोर्टिंग डीबी बनाई गई जो चली गई। एक अत्यधिक लेन-देन DB पर रिपोर्ट चलाना कई बुरे विचारों की शुरुआत है।
jfrankcarr

जवाबों:


23

लावे का प्रवाह?

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

पर्ल डिज़ाइन विकी से: लावा फ्लो "जब कोड ... आगे निकलता है और स्थायी हो जाता है, यह पुरातात्विक विविधता का एक वास्तुशिल्प विशेषता बन जाता है। चीजों को बिना सवाल के संरचना के ऊपर बनाया गया है और उनके नीचे क्या है इसे बदलने की आशा के बिना।" मौजूदा कोड को एक ऐतिहासिक जिज्ञासा के रूप में देखा जाता है। "

अक्सर, मूल, अपूर्ण डिजाइन के साथ पिछड़े संगतता (अब कई अतिरिक्त घटक इस पर निर्भर करते हैं) को बनाए रखने की आवश्यकता में सिस्टम को उत्पादन परिणामों में डालते हैं।

लावा प्रवाह अक्सर एक परियोजना पर काम कर रही विकास टीम में बदलाव से उत्पन्न होता है। जैसे ही कर्मचारी परियोजना के अंदर और बाहर साइकिल चलाते हैं, सिस्टम के पहलुओं के उद्देश्य का ज्ञान खो सकता है, और इन टुकड़ों को साफ करने के बजाय, उनके चारों ओर काम किया जाता है, जिससे सिस्टम की जटिलता और गंदगी बढ़ जाती है।

लावा प्रवाह को एक विरोधी पैटर्न माना जाता है, जो आम तौर पर सामना की जाने वाली घटना है जो खराब डिजाइन की ओर ले जाती है।


3
मैंने इसे पहले देखा है (ठीक है मैं इसे लगभग हर दिन देखता हूं) लेकिन मैंने कभी भी इसका नाम नया नहीं रखा।
केविन

3
धन्यवाद। मैंने कभी नहीं सुना था कि यह कहा जाता है। मैं आमतौर पर विनचेस्टर मिस्ट्री हाउस के रूप में पैटर्न का उल्लेख करता हूं।
jfrankcarr

@jfrankcarr: मुझे आपका नाम बेहतर लगा। बहुत चालाक।
केविन

मुझे नहीं लगता कि यह वास्तव में लावा प्रवाह है। विचार यह है कि कोड जिसका अब उपयोग नहीं किया गया है वह वास्तविक कोड के परिदृश्य पर लावा की तरह उग आया है। यदि कोड अभी भी उपयोग किया जाता है, तो यह संभवत: पहली बार में अलग तरीके से करने के लिए बेहतर होगा।
psr

@psr - अनुभाग "" जब कोड ... आगे निकलता है और स्थायी हो जाता है, यह पुरातात्विक विविधता का एक वास्तुशिल्प विशेषता बन जाता है। चीजों को बिना प्रश्न के संरचना के ऊपर बनाया गया है और उनके नीचे क्या है इसे बदलने की आशा के बिना। मौजूदा कोड को एक ऐतिहासिक जिज्ञासा के रूप में देखा जाता है। "जो कुछ हुआ है, उसके साथ बहुत इनलाइन है।
P.Brian.Mackey

3

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

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

एक एंटी-पैटर्न, IMHO के रूप में इसके साथ समस्या यह है कि इसके बारे में जानने से लगता है कि यह बहुत अधिक मूल्य का नहीं है। जिसने भी ऐसा किया है वह पहले से ही समझ गया है कि यह जानना अच्छा होगा कि इसे बेहतर कैसे बनाया जाए, इसलिए उन्हें यह नहीं पता होगा कि इसे कैसे करना है। तो एक विरोधी पैटर्न के रूप में सामान्य स्थिति के बारे में सुना है वास्तव में मदद नहीं करेगा।

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


+1 कई अच्छे अंक। आप सही हो सकते हैं। मैंने इस विशेष स्थान पर कई बार प्रक्रिया को दोहराया है। इसलिए, इसे एक प्रतिमान के रूप में वर्णित करने की मेरी प्रेरणा है। इस विशेष मुद्दे को ठीक करने के बजाय।
पी। ब्रायन। मैके

3

निश्चित नहीं है कि यह मदद करता है, लेकिन कार्यालय स्वचालन अक्सर एक विशेष मामला होता है:

कार्यालय स्वचालन आमतौर पर इस तरह से किया जाता है यदि इसे एक उपयोगकर्ता डेस्कटॉप (esp .net वेबसाइटों के लिए स्वचालित रूप से बंद किया जाना चाहिए) क्योंकि कार्यालय स्वचालन आपको सही ढंग से चेतावनी देता है कि यदि वे बिना सिर के चल रहे हैं तो कार्यालय इंटरोप टूल में खराब लीक होगा। उस टूलकिट के साथ कार्यालय डॉक्स बनाने के लिए हेडलेस प्रक्रिया लिखने के लिए मजबूर होने के कारण हमने बलि सेवाओं को बुलाया क्योंकि आपको मेमोरी वापस पाने के लिए समय-समय पर उनकी हत्या करनी पड़ी थी।

संग्रह के अलावा जो आप बता रहे हैं वह दुर्भाग्य से कुछ मामलों में सबसे अच्छा अभ्यास है।

लिंक: http://support.microsoft.com/kb/257757


+1 - यह एक दिलचस्प टिप्पणी है। बीमार इसे ध्यान में रखें। सेवा को तब बने रहने की जरूरत है। हालांकि प्रदर्शन भयानक है। 5 कॉलम और 100 से कम पंक्तियों के साथ एक स्प्रेडशीट उत्पन्न करने के लिए 1 मिनट। Theres 100 स्प्रेडशीट ...
P.Brian.Mackey
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.