संग्रहित प्रक्रिया नामकरण परंपराएं? [बन्द है]


11

हमारे वरिष्ठ डेवलपर्स में से एक ने कहा है कि हमें नामकरण की "वॉर्मविब" ("GetMemberByID") प्रकार के बजाय "ऑब्जेक्टविर्ब" ("मेग्गेटबायड") नामकरण के साथ संग्रहीत प्रक्रियाओं के लिए एक नामकरण सम्मेलन का उपयोग करना चाहिए। इस मानक के लिए तर्क यह है कि सभी संबंधित संग्रहीत कार्यविधियाँ कार्रवाई के बजाय ऑब्जेक्ट द्वारा एक साथ समूहीकृत की जाएंगी।

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

इस पर आपकी क्या राय है? संग्रहित खरीद के नामकरण का और अधिक सामान्य तरीका क्या है, और किस प्रकार के संग्रहीत खरीद नामकरण सम्मेलनों का आपने उपयोग किया है या इसके द्वारा जाना है?


1
"नाम स्वाभाविक रूप से पढ़ा नहीं जा सकता है"? किसके द्वारा? आपकी पहली प्राकृतिक भाषा क्या है? अंग्रेज़ी? या कुछ और?
एस.लॉट

9
@ एस.लॉट - मुझे ऐसा लगता है कि आप डिगोबा में एक दलदल में कुछ सुनेंगे।
TZHX

1
बड़ा अच्छा सवाल! कुछ मानक होने से बेहतर है कि कोई मानक नहीं है, लेकिन कुछ सक्षम लोगों ने इस अवधारणा को आगे भी ले लिया और एक अच्छे मानक के साथ आए। उदाहरण के लिए, दिक्जस्त्र ने लिखा है कि यह 0 के साथ पहले तत्व के रूप में इंडेक्स एरेज़ को इतना अधिक क्यों बनाता है। 1. developeronline.blogspot.com/2008/04// यह एक बहुत ही मामूली विषय है, और फिर भी मैं शर्त लगाता हूं यह उसके साथ आने के लिए कुछ छेड़छाड़ ले गया। इसी तरह, स्पॉल्स्की के पास एक अच्छी प्रणाली है: joelonsoftware.com/articles/Wrong.html कुछ सोचकर दर्द से बचा जाता है
अय्यूब

4
मैं कहूंगा कि संग्रहीत प्रक्रियाओं से पूरी तरह छुटकारा पा लिया जाएगा;)
माइकल ब्राउन

जवाबों:


10

इसे इस तरह देखो। आपके तरीके कोड में कैसे व्यवस्थित हैं? ऑब्जेक्ट द्वारा, विधियों के साथ हैंग हो रहा है।

MyObject.GetById(int)
MyObject.Save()

आपके संग्रहित नामकरण का नामकरण करने से, यह देखना बहुत आसान हो जाएगा कि वे आपके स्रोत कोड से कैसे संबंधित हैं।

MyObjectGetById
MyObjectSave

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

4
मुझे नहीं लगता कि OO यहां एक विचार है। उपरोक्त केवल एक उदाहरण है कि यह कैसे अप्राकृतिक नहीं है क्योंकि यह पहली बार इस तरह के नामकरण सम्मेलन का उपयोग करने के लिए प्रकट हो सकता है।
मार्क फ्रीडमैन

2
यदि कोड में एक विधि होने के नाते "MyObject.GetById (int)" हो सकता है तो एक संग्रहीत खरीद को भी "MyObject.GetById" क्यों नहीं कहा जा सकता है? समूहीकरण अभी भी होता है, और एक बिंदु वस्तु / तालिका और वांछित कार्रवाई के बीच अलगाव देगा।
क्रिस

1
@ क्रिस, मुझे यकीन नहीं है कि आप 'का उपयोग कर सकते हैं।' एक खरीद के नाम पर, लेकिन निश्चित रूप से ऑब्जेक्टविर्ब समूहों का उपयोग उसी तरीके से करते हैं जैसे कोई उनके बारे में सोचता है। मैं पहले पाने के बारे में नहीं सोचता, मुझे लगता है कि मुझे क्या चाहिए, फिर इसे कैसे प्राप्त किया जाए।
कैफीक

1
@ मर्क फ्रीडमैन, ऐसा नहीं है कि यह आवश्यक रूप से ऊ है, आप प्रक्रियात्मक भाषाओं में चीजों को उसी तरह समूहित करते हैं, केवल वे वास्तविक वस्तुओं में नहीं हैं। लेकिन आमतौर पर उपसर्ग के साथ क्या स्वाभाविक रूप से एक वस्तु बन जाएगा अगर कोड परिवर्तित हो गए थे। strCompare, strLen, etc, etc, objectAction
CaffGeek

6

मैं भी तर्क देख सकता हूं; यह इकाई द्वारा एक साथ क्रियाओं को समूहित करता है। हालाँकि, यदि आपके कार्य हमेशा GET, PUT और DELETE होते हैं, तो नामकरण में परिवर्तन उतना अधिक मायने नहीं रखता है। मुझे नए नामकरण मानक से सबसे अच्छा फायदा होता है जब आपके पास अद्वितीय एक्शन नाम होते हैं, जैसे "खातासंग्रहकर्ता", इस तरह की चीज।

सबसे महत्वपूर्ण बात यह है कि एक एकल मानक है, और यह है कि यह सभी के द्वारा पीछा किया जाता है।


1
ऐसी कंपनी से आना जिसका कोई आधिकारिक नामकरण मानक नहीं था ("उपसर्ग के अलावा sp"), एक मानक होना ही एकमात्र ऐसी चीज है जो मायने रखती है।
Glen Solsberry

5

आपको यह तय करना होगा कि जो बड़े जारीकर्ता हैं, उनके लिए जो प्रॉपर आप ढूंढ रहे हैं या ढूंढ रहे हैं, उनका अर्थ तुरंत बता दें?

अगर आप देखें:

सदस्यगेट के सदस्यगेटनाम सदस्य

कुछ बिंदु पर, एक बार जब आप पहले से ही 'सदस्य' पा लेते हैं, तो आप उसे अनदेखा कर देते हैं और वहां से चले जाते हैं।

फोनबुक में देखें। यदि आप जॉन स्मिथ को खोजना चाहते हैं, तो स्मिथ, डेव स्मिथ, जॉन स्मिथ, रॉबर्ट हैं

वास्तव में यह कठिन है? मैं लोगों को उनके अंतिम नाम से नहीं बुलाता और फिर पहला नाम जब तक यह जेम्स बॉन्ड नहीं है।


1
+1 मैं इस सवाल और प्रतिक्रियाओं से प्यार करता हूँ! यह प्रयोज्यता से संबंधित है, और यह बहुत मुश्किल और दिलचस्प हो सकता है।
जॉब

0

"ObjectVerb" के बजाय, आप "namespace_verbObject" का उपयोग कर सकते हैं, जैसे Member_GetById
यह नामस्थान द्वारा प्रक्रियाओं को समूहित करेगा, और अभी भी पारंपरिक "वर्बसमॉर्टिंग" नामकरण का उपयोग करेगा।

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