एक डेवलपर मुख्य रूप से सी # लिखने के रूप में मैंने सी # कोड लिखते समय कुछ अच्छे प्रथाओं को अपनाया है। जब मैं कभी-कभी संग्रहीत प्रक्रियाओं को लिखता हूं तो मुझे उन प्रथाओं को संग्रहीत प्रक्रिया कोड में लागू करने में परेशानी होती है।संग्रहित प्रक्रियाओं की संरचना का सर्वोत्तम अभ्यास
कई अवसरों पर मुझे दुःस्वप्न संग्रहीत प्रक्रिया कोड विरासत में मिला है, संग्रहीत प्रक्रियाओं की पहली तीन या चार परतें कुछ अस्थायी तालिकाओं को स्थापित करती हैं और ज्यादातर एक दूसरे को बुलाती हैं। कोई वास्तविक काम नहीं किया गया और कोड की कुछ पंक्तियां। फिर अंत में "अंतिम" संग्रहीत प्रक्रिया के लिए एक कॉल है, जो SQL कोड की 3000-5000 लाइनों का एक बड़ा राक्षस है। उस कोड में कोड कोड डुप्लिकेशंस, जटिल नियंत्रण प्रवाह (उर्फ स्पेगेटी) जैसी एक बहुत सी कोड गंध होती है और एक विधि जो एक दूसरे के बाद एक बहुत अलग चीज के साथ खड़ी होती है, जहां कोई काम शुरू नहीं होता है और यह कहां समाप्त होता है (यहां तक कि एक भी नहीं एक विभाजक के रूप में टिप्पणी)।
मैंने इंटरमीडिएट अस्थायी सारणी से चुनने वाले चुनिंदा बयानों का उपयोग भी देखा है। डिबग उद्देश्यों के लिए चयनों को वापस चालू किया जा सकता है, लेकिन किसी भी कॉलिंग कोड को लौटाए गए परिणाम सेट के विशिष्ट क्रम की अपेक्षा करने से पहले हटा दिया जाना चाहिए।
स्पष्ट रूप से मेरे साथी टीम के साथी भी अच्छे एसक्यूएल लेखन प्रथाओं की कमी साझा करते हैं।
तो ... (और यहां वास्तविक सवाल आता है) ... मॉड्यूलर रखरखाव संग्रहित प्रक्रियाओं को लिखने के लिए अच्छे अभ्यास क्या हैं?
दोनों घरों के बने प्रथाओं और पुस्तकों/ब्लॉगों के संदर्भों का स्वागत है। विधियों के साथ-साथ उपकरण जो कुछ कार्यों के साथ मदद करते हैं।
कुछ क्षेत्रों में जहां मैं अच्छी प्रथाओं
नहीं मिला है संक्षेप में प्रस्तुत करने देता है- Modularization और कैप्सूलीकरण (संग्रहीत किया जाता है प्रक्रियाओं अस्थायी तालिकाओं वास्तव में जाने का रास्ता? के माध्यम से संचार)
- सी # में मैं विधानसभाओं का उपयोग करें, कक्षाएं और इसे पूरा करने के लिए एक्सेस संशोधक के साथ सजाए गए तरीकों।
- डिबगिंग/परीक्षण (डिबगिंग का लक्ष्य को संशोधित करने की तुलना में बेहतर?)
- डीबग उपकरण?
- डीबग निशान?
- टेस्ट फिक्स्चर?
- और कोड कोड
- सी # में मैं refactor की संरचना का उपयोग सिर्फ एक तार्किक कार्य प्रत्येक करता है कि छोटे तरीकों को तोड़ने पर जोर देते कोड/तर्क/डेटा/नियंत्रण प्रवाह।
- कोड दोहराव
ज्यादातर मैं डीबीएमएस के रूप में एसक्यूएल सर्वर मुठभेड़ लेकिन नास्तिक जवाब या उत्तर DBMS अन्य DBMS की सुविधाओं उनका कहना है: तों ऊपर मामलों में है कि मदद का भी स्वागत।
कुछ पृष्ठभूमि देने के लिए: सबसे बड़ी संग्रहीत प्रक्रियाओं का सामना करना पड़ रहा है परिदृश्य रिपोर्टिंग में जहां आधार एक बड़ी तालिका से कुछ सारांश मान बनाना है। लेकिन जिस तरह से आपको कुछ अपवाद तालिका में होने वाले कुछ मानों को बाहर करने की आवश्यकता है, कुछ अभी तक पूर्ण सामग्री तालिका में कुछ मान जोड़ें, पिछले वर्ष की तुलना करें (क्या आप कल्पना कर सकते हैं कि बदसूरत कोड जो उत्पाद बदलते विभाग को संभालता है वर्षों के बीच?), आदि
इन कारणों के साथ-साथ एससीएम के साथ संग्रहीत प्रक्रियाओं का उपयोग करने में असमर्थता के कारण, मैंने उन सभी के लिए सबसे आवश्यक और स्पष्ट उपयोग (ट्रिगर, इत्यादि ...) से बचा है। हम व्यवसाय तर्क को व्यापार परत (.NET) में रखते हैं और केवल उस डेटा के लिए डेटाबेस का उपयोग करते हैं - डेटा बेस। – gahooa
आदर्श रूप से, संग्रहीत प्रक्रियाओं को अन्य संग्रहीत प्रक्रियाओं को कॉल नहीं करना चाहिए। बीएल परत के लिए यही है। दुर्भाग्यवश, अगर आपके पास पहले से ही नेस्टेड एसपी कॉल से भरा डेटाबेस है तो वह भावना वास्तव में मदद नहीं करती है। क्या आप वर्तमान मॉडल को अधिक रखरखाव करने के तरीके, या सर्वोत्तम प्रणाली का बेहतर पालन करने के लिए अपने सिस्टम को दोबारा कैसे सुधारने के बारे में सलाह चाहते हैं, इस बारे में सलाह ले रहे हैं? –
@ गहुआ मैंने जितना संभव हो सके .NET में भी (आंशिक रूप से क्योंकि यह मेरा घर क्षेत्र है) लेकिन कुछ मौकों पर, जैसे कि एक बड़े कोड बेस को विरासत में रखते हुए या जब आपके पास बड़ी मात्रा में डेटा होता है तो आप संग्रहित के साथ कम या ज्यादा अटक जाते हैं प्रक्रियाओं। –