2010-02-17 15 views
13

आप आमतौर पर अपने पीएल/एसक्यूएल स्थिरांक कहां स्टोर करते हैं? पैकेज-बॉडी लेवल पर? विनिर्देशन में? मैंने कुछ लोगों को केवल स्थिरांक में स्थिरांक में स्थिरांक रखने के लिए देखा है। इस क्षेत्र में सर्वोत्तम प्रथाएं क्या हैं?पीएल/एसक्यूएल स्थिरांक कहां रखना है?

धन्यवाद।

उत्तर

6

पैकेज बॉडी या स्पेक में स्थिरांक रखने का एक नकारात्मक पक्ष यह है कि जब आप पैकेज को पुन: संकलित करते हैं, तो पीजीए में पैकेज स्थिति वाले किसी भी उपयोगकर्ता सत्र में ओआरए -04068 मिल जाएगा। इस कारण से, एक बड़े विकास वातावरण में हमने प्रत्येक पैकेज के लिए स्थिरांक (और पैकेज ग्लोबल्स यदि कोई हो) रखने के लिए एक अलग स्पेक-केवल पैकेज रखने के सम्मेलन को अपनाया। इसके बाद हम एक नियम लगाएंगे कि इन spec-only संकुलों को केवल उनके "स्वामित्व" पैकेज द्वारा संदर्भित करने की अनुमति दी गई थी - जिसे हमने कोड समीक्षा पर लागू किया था। एक आदर्श समाधान नहीं है, लेकिन यह उस समय हमारे लिए काम करता था।

इसी कारण से, मैं कभी भी एक-स्थिर-पैकेज-टू-नियम-उन सभी की अनुशंसा नहीं करता क्योंकि हर बार किसी को एक नया निरंतर परिचय देने की आवश्यकता होती है, या किसी मौजूदा को संशोधित करने की आवश्यकता होती है, तो सभी उपयोगकर्ता सत्रों को ओआरए- 04,068।

+3

पूर्णता के लिए एपिलोग: सामान्य अभ्यास सामान्य रूप से उनके उपयोग के करीब जितना संभव हो उतना परिभाषित करना है: यदि निरंतर केवल एक प्रक्रिया द्वारा उपयोग किया जाता है, तो उसे उस प्रक्रिया में परिभाषित करें; यदि स्थिरता केवल पैकेज बॉडी में उपयोग की जाती है, तो इसे पैकेज बॉडी में परिभाषित करें (ऊपर उल्लिखित ओआरए -04068 समस्या को छोड़कर - जो 11 जीआर 2 में कोई समस्या नहीं कम हो जाती है, इसका उल्लेख किया जाना चाहिए, यदि संस्करणों का उपयोग किया जाता है)। –

4

कई मामलों में, आप उन्हें विनिर्देश में रखना चाहते हैं ताकि अन्य पैकेज उनका उपयोग कर सकें, विशेष रूप से पैरामीटर के रूप में जब आपके पैकेज से फ़ंक्शंस और प्रक्रियाओं को कॉल करते हैं।

केवल तभी जब आप उन्हें पैकेज में निजी रखना चाहते हैं, तो आपको उन्हें शरीर में रखना चाहिए।

केवल स्थिरांक के लिए एक पैकेज होने के कारण उन स्थिरांकों के लिए एक अच्छा विचार हो सकता है जो विशेष रूप से कोड के किसी भी हिस्से से संबंधित नहीं हैं, बल्कि पूरे स्कीमा के लिए प्रासंगिक हैं।

1

मैं संकुल निकाय को डिफ़ॉल्ट रूप से पैकेज बॉडी में तब तक पसंद करूंगा जब तक कि आप अपनी सार्वजनिक पैकेज प्रक्रियाओं/कार्यों में से किसी एक के लिए पैरामीटर मान के रूप में निरंतर उपयोग न करें या अपने कार्यों के लिए वापसी मूल्य के रूप में।

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

यदि आपको डिफॉल्ट भाषा या सामान जैसी सामग्री को स्टोर करने की आवश्यकता है, तो मैं get_default_language आदि जैसे कार्यों में उन प्रतियोगिताओं को समाहित कर दूंगा और स्थिरांक को निजी रखूंगा।

1

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

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

3

हमारे आवेदन के लिए, सभी स्थिरांक एक तालिका में हैं। उन्हें निकालने के लिए एक साधारण कार्य का उपयोग किया जाता है। पुनर्मूल्यांकन के साथ कोई समस्या नहीं, ओआरए -04068, ...

+3

तो फिर वे वास्तव में "स्थिरांक" नहीं हैं, क्या वे हैं? :-) – ObiWanKenobi

+1

_ "एक आदमी का निरंतर एक और आदमी का चर है।" _ - एलन पर्लिस – user272735

2

मेरी राय में सबसे अच्छा विकल्प। एक तालिका में "निरंतर" स्टोर करें और मान प्राप्त करने के लिए एक सामान्य कार्य बनाएं।नहीं 04068

संबंधित मुद्दे