नेमिंग कन्वेंशन (प्रोग्रामिंग)

From Vigyanwiki
Revision as of 09:33, 6 October 2023 by alpha>Manjuu

कंप्यूटर प्रोग्रामिंग में, नेमिंग कन्वेंशन आइडेंटिफायर (कंप्यूटर लैंग्वेज) के लिए उपयोग किए जाने वाले वर्ण अनुक्रम को चुनने के लिए नियमों का सेट है जो सोर्स कोड और सॉफ़्टवेयर डॉक्यूमेंटेशन में वेरिएबल (कंप्यूटर विज्ञान), डेटा टाइप, फंक्शन और अन्य इकाइयो को दर्शाता है।

नेमिंग कन्वेंशन का उपयोग करने के कारणों (प्रोग्रामर को किसी भी वर्ण अनुक्रम को चुनने की अनुमति देने के विपरीत) में निम्नलिखित सम्मिलित हैं:

  • सोर्स कोड को पढ़ने और समझने के लिए आवश्यक प्रयास को कम करने के लिए;[1]
  • सिंटैक्स और नेमिंग स्टैण्डर्ड से अधिक महत्वपूर्ण उद्देश्यों पर ध्यान केंद्रित करने के लिए कोड समीक्षाओं को सक्षम करना है।
  • कोड गुणवत्ता समीक्षा टूल को अपनी रिपोर्टिंग को मुख्य रूप से सिंटैक्स और स्टाइल प्राथमिकताओं के अतिरिक्त अन्य महत्वपूर्ण उद्देश्यों पर केंद्रित करने में सक्षम बनाना है।

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

संभावित लाभ

नेमिंग कन्वेंशन के लाभों में निम्नलिखित सम्मिलित हो सकते हैं:

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

चुनौतियाँ

नेमिंग कन्वेंशन का चुनाव (और जिस सीमा तक उन्हें प्रयुक्त किया जाता है) अधिकांशतः विवादास्पद विषय होता है, जिसमें पक्षपाती अपने दृष्टिकोण को सर्वश्रेष्ठ और दूसरों को निम्नतर मानते हैं। इसके अतिरिक्त, ज्ञात और अच्छी तरह से परिभाषित नेमिंग कन्वेंशन के अतिरिक्त, कुछ संगठन निरंतर उनका पालन करने में विफल हो सकते हैं, जिससे असंगतता और भ्रम उत्पन्न हो सकता है। यदि नेमिंग कन्वेंशन के नियम आंतरिक रूप से असंगत, इच्छानुसार, याद रखने में कठिन, या अन्यथा लाभकारी से अधिक भारयुक्त माने जाते हैं, तो यह चुनौतियाँ और भी बढ़ सकती हैं।

पठनीयता

अच्छी तरह से चुने गए आइडेंटिफायर डेवलपर्स और विश्लेषकों के लिए यह समझना अधिक सरल बनाते हैं कि सिस्टम क्या कर रहा है और नई आवश्यकताओ के लिए आवेदन करने के लिए सोर्स कोड को कैसे ठीक या विस्तारित किया जाता है।

उदाहरण के लिए, यद्यपि

 a = b * c;

क्या सिंटैक्स (प्रोग्रामिंग लैंग्वेज) सही है, इसका उद्देश्य स्पष्ट नहीं है। इसकी तुलना इससे करें:

 weekly_pay = hours_worked * hourly_pay_rate;

जो सोर्स कोड के उद्देश्य और अर्थ को दर्शाता है, कम से कम उन लोगों के लिए जो कथन के संदर्भ से परिचित हैं।

प्रयोगों से पता चलता है कि आइडेंटिफायर स्टाइल रिकॉल और स्पष्टता को प्रभावित करती है और स्टाइल से परिचित होने से रिकॉल की गति तेज हो जाती है।[3]


कॉमन एलिमेंट

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

पहचानकर्ताओं की लंबाई

सभी नेमिंग कन्वेंशन के मौलिक एलिमेंट पहचानकर्ता की लंबाई (अतिरिक्त, पहचानकर्ता में अनुमत व्यक्तिगत वर्णों की सीमित संख्या) से संबंधित नियम हैं। कुछ नियम निश्चित संख्यात्मक सीमा निर्धारित करते हैं, जबकि अन्य कम स्पष्ट अनुमान या दिशानिर्देश निर्दिष्ट करते हैं।

पहचानकर्ता लंबाई नियमों का व्यवहार में नियमित रूप से विरोध किया जाता है, और शैक्षिक रूप से बहुत विचार का विषय होता है।

कुछ विचार:

  • छोटे पहचानकर्ताओं को अधिक उपयुक्त के रूप में प्राथमिकता दी जा सकती है, क्योंकि उन्हें टाइप करना सरल होता है (चूंकि विभिन्न आईडीई और टेक्स्ट-एडिटर टेक्स्ट-पूर्णता प्रदान करते हैं, जो इसे कम करता है)
  • अत्यंत संक्षिप्त पहचानकर्ता (जैसे कि 'i' या 'j') को स्वचालित खोज और प्रतिस्थापन टूल का उपयोग करके विशिष्ट रूप से पृथक करना बहुत कठिन है (चूंकि यह नियमित रेगेक्स-बेस्ड टूल के लिए कोई समस्या नहीं है)
  • बड़े पहचानकर्ताओं को प्राथमिकता दी जा सकती है क्योंकि छोटे पहचानकर्ता पर्याप्त जानकारी को एन्कोड नहीं कर सकते हैं या बहुत अलौकिक दिखाई देते हैं
  • दृश्य अव्यवस्था के कारण बड़े पहचानकर्ताओं को नापसंद किया जा सकता है

यह विवृत शोध विषय है कि क्या कुछ प्रोग्रामर छोटे पहचानकर्ताओं को पसंद करते हैं क्योंकि उन्हें बड़े पहचानकर्ताओं की तुलना में टाइप करना या सोचना सरल होता है, या क्योंकि विभिन्न स्थितियों में बड़े पहचानकर्ता केवल दृश्यमान कोड को अव्यवस्थित करता है और कोई अतिरिक्त लाभ नहीं देता है।

प्रोग्रामिंग में संक्षिप्तता का कुछ सीमा तक कारण यह हो सकता है:

  • प्रारंभिक लिंकर (कंप्यूटिंग) जिसमें मेमोरी को बचाने के लिए वेरिएबल नामों को 6 अक्षरों तक सीमित करना आवश्यक था। इसके पश्चात की प्रगति ने मानवीय समझ के लिए बड़े परिवर्तनशील नामों का उपयोग करने की अनुमति दी थी, किन्तु जहां केवल पहले कुछ अक्षर ही महत्वपूर्ण थे। मूलभूत के कुछ संस्करणों जैसे टीआरएस-80 लेवल 2 बेसिक में, बड़े नामों की अनुमति थी, किन्तु केवल पहले दो अक्षर ही महत्वपूर्ण थे। इस सुविधा ने गलत व्यवहार की अनुमति दी जिसे डीबग करना कठिन हो सकता है, उदाहरण के लिए जब VALUE और VAT जैसे नामों का उपयोग किया गया था और पृथक होने का आशय था।
  • प्रारंभिक सोर्स कोड एडिटर में स्वत: पूर्णता का अभाव है
  • प्रारंभिक लो-रिज़ॉल्यूशन मॉनिटर सीमित लाइन लंबाई के साथ (उदाहरण के लिए केवल 80 अक्षर)
  • कंप्यूटर विज्ञान का अधिकांश भाग गणित से उत्पन्न हुआ है, जहां वरिएबल नाम परंपरागत रूप से केवल अक्षर होते हैं

लेटर केस और अंक

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

एकाधिक-शब्द पहचानकर्ता

सामान्य अनुशंसा सार्थक पहचानकर्ताओं का उपयोग करना है। शब्द अनेक शब्दों जितना सार्थक या विशिष्ट नहीं हो सकता है। परिणाम स्वरुप, कुछ नेमिंग कन्वेंशन से अधिक शब्द वाले यौगिक पहचानकर्ताओं के उपचार के लिए नियम निर्दिष्ट करती हैं।

चूंकि अधिकांश प्रोग्रामिंग लैंग्वेज पहचानकर्ताओं में व्हाइटस्पेस (कंप्यूटर विज्ञान) की अनुमति नहीं देती हैं, इसलिए प्रत्येक शब्द को परिसीमित करने की विधि की आवश्यकता होती है (पश्चात् के पाठकों के लिए यह व्याख्या करना सरल हो जाता है कि कौन से अक्षर किस शब्द से संबंधित हैं)। ऐतिहासिक रूप से कुछ प्रारंभिक लैंग्वेज, विशेष रूप से फोरट्रान (1955) और एएलजीओएल (1958) ने, संदर्भ के अनुसार पहचानकर्ताओं के अंत का निर्धारण करते हुए, पहचानकर्ताओं के अन्दर रिक्त स्थान की अनुमति दी थी। टोकनाइजेशन (शब्दावली विश्लेषण) की कठिनाई के कारण पश्चात् की लैंग्वेज में इसे छोड़ दिया गया था। केवल शब्दों को जोड़कर नाम लिखना संभव है, और इसका उपयोग कभी-कभी किया जाता है, जैसे कि mypackage जावा पैकेज नामों के लिए,[4] चूंकि बड़े समय तक सुपाठ्यता प्रभावित होती है, इसलिए सामान्यतः किसी न किसी रूप में पृथक्करण का उपयोग किया जाता है।

सीमांकक-पृथक शब्द

दृष्टिकोण अक्षरांकीय वर्ण के साथ पृथक-पृथक शब्दों को परिसीमित करना है। इस उद्देश्य के लिए सामान्यतः उपयोग किए जाने वाले दो लेटर हैफ़ेन (-) और अंडरस्कोर (_) हैं; उदाहरण के लिए, दो शब्दों वाला नामtwo wordsके two-wordsयाtwo_wordsरूप में दर्शाया जाएगा।

हाइफ़न का उपयोग कोबोल (1959), फोर्थ (प्रोग्रामिंग लैंग्वेज) (1970), और लिस्प (प्रोग्रामिंग लैंग्वेज) (1958) लिखने वाले लगभग सभी प्रोग्रामर द्वारा किया जाता है; यह यूनिक्स में कमांड और पैकेज के लिए भी सामान्य है, और इसका उपयोग कैस्केडिंग स्टाइल शीट्स में किया जाता है।[5] इस कन्वेंशन का कोई स्टैण्डर्ड नाम नहीं है, चूंकि इसे लिस्प-केस या कोबोल-केस (पास्कल केस की तुलना करें), कबाब-केस, ब्रोचेट-केस या अन्य वेरिएंट के रूप में संदर्भित किया जा सकता है।[6][7][8][9] इनमें से, कबाब-केस, कम से कम 2012 का है,[10] तब से कुछ मुद्रा प्राप्त की है।[11][12]

इसके विपरीत, फोरट्रान/एएलजीओएल कन्वेंशन की लैंग्वेज, विशेष रूप से सी (प्रोग्रामिंग लैंग्वेज) और पास्कल (प्रोग्रामिंग लैंग्वेज) वर्गों की लैंग्वेज, सब्ट्रेक्शन इन्फिक्स नोटेशन ऑपरेटर के लिए हाइफ़न का उपयोग करती थीं, और इसके चारों ओर रिक्त स्थान की आवश्यकता नहीं चाहती थीं (जैसा फ्री -फ़ॉर्म लैंग्वेज), पहचानकर्ताओं में इसके उपयोग को रोकना है।

विकल्प अंडरस्कोर का उपयोग करना है; यह सी वर्ग (पायथन सहित) में सामान्य है, छोटे अक्षरों के साथ, उदाहरण के सी प्रोग्रामिंग लैंग्वेज (1978) में पाया जाता है, और इसे स्नैक केस या स्नेल केस के रूप में जाना जाता है। अपरकेस के साथ अंडरस्कोर, जैसे कि UPPER_CASE में, सामान्यतः सी प्रीप्रोसेसर मैक्रोज़ के लिए उपयोग किया जाता है, इसलिए इसे MACRO_CASE के रूप में जाना जाता है, और यूनिक्स में पर्यावरण वरिएबल के लिए, जैसे बैश (यूनिक्स शेल) में BASH_VERSION के लिए उपयोग किया जाता है। कभी-कभी इसे सामान्यतः SCREAMING_SNAKE_CASE (वैकल्पिक रूप से SCREAMING_SNAIL_CASE) कहा जाता है।

लेटर केस-सेपरेटेड वार्ड

अन्य दृष्टिकोण मध्यस्थ पूंजीकरण का उपयोग करके शब्द सीमाओं को इंगित करना है, जिसे कैमल केस, पास्कलकेस और विभिन्न अन्य नाम कहा जाता है, इस प्रकार two wordsजैसा क्रमशः twoWordsयाTwoWords रेंडरिंग किया जाता है. यह कन्वेंशन सामान्यतः पास्कल (प्रोग्रामिंग लैंग्वेज), जावा (प्रोग्रामिंग लैंग्वेज), सी शार्प (प्रोग्रामिंग लैंग्वेज) या सी#, और मूल दृश्य में उपयोग किया जाता है। पहचानकर्ताओं में आरंभिक शब्दों का उपचार (उदाहरण के लिए एक्सएमएल और एचटीटीपी में)। XMLHttpRequest) भिन्न होता है। कुछ लोग निर्देश देते हैं कि उन्हें छोटा किया जाए (उदा. XmlHttpRequest) टाइपिंग, पठनीयता और सेगमेंटेशन को सरल बनाने के लिए, जबकि स्पष्टता के लिए उन्हें बड़े अक्षरों में छोड़ देते हैं (उदाहरण के लिएXMLHTTPRequest)।

एकाधिक-शब्द पहचानकर्ता प्रारूपों के उदाहरण

एकाधिक-शब्द पहचानकर्ता प्रारूप
फ़ॉर्मेटिंग नाम(s)
twowords फ़्लैटकेस[13][14]
TWOWORDS अपरकेस[13]
twoWords (लोअर) कैमलकेस, ड्रोमेडरीकेस
TwoWords पास्कलकेस, अपरकैमलकेस, स्टडीलीकेस[15]
two_words स्नेक_केस, स्नेल_केस, पोथोले_केस
TWO_WORDS आल_कैप्स, स्क्रिमिंग_स्नेक_केस,[16] मैक्रो_केस, कांस्टेंट_केस
two_Words कैमल_स्नेक_केस
Two_Words पास्कल_स्नेक_केस, टाइटल_केस
two-words कबाब-केस, डैश-केस, लिस्प-केस, स्पाइनल-केस
TWO-WORDS ट्रेन-केस, कोबोल-केस, स्क्रिमिग-कबाब-केस
Two-Words ट्रेन-केस,[13] एचटीटीपी-हैडर-केस[17]


मेटाडेटा और हाइब्रिड कन्वेंशन

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

हंगेरियन नोटेशन

शायद सबसे प्रसिद्ध हंगेरियन नोटेशन है, जो अपने नाम में वरिएबल के उद्देश्य (एप्स हंगेरियन) या डेटा प्रकार (सिस्टम हंगेरियन) को एन्कोड करता है।[18] उदाहरण के लिए, वेरिएबल szName के लिए उपसर्ग sz इंगित करता है कि वेरिएबल शून्य-समाप्त स्ट्रिंग है।

स्थिति नोटेशन

बहुत कम (आठ अक्षर और उससे कम) के लिए उपयोग की जाने वाली स्टाइल हो सकती है: LCCIIL01, जहां LC अनुप्रयोग (लेटर ऑफ क्रेडिट) होगा, C कोबोल के लिए, IIL विशेष प्रक्रिया उपसमुच्चय के लिए, और 01 अनुक्रम संख्या होगी।

इस प्रकार का सम्मेलन अभी भी कार्य नियंत्रण लैंग्वेज पर निर्भर मेनफ्रेम में सक्रिय उपयोग में है और इसे 8.3 (पीरियड सेपरेटर के साथ अधिकतम आठ अक्षर और उसके पश्चात् तीन अक्षर फ़ाइल प्रकार) एमएस-डॉस स्टाइल में भी देखा जाता है।

समग्र शब्द योजना (लैंग्वेज की)

IBM की OF लैंग्वेज को IMS (सूचना प्रबंधन प्रणाली) मैनुअल में प्रलेखित किया गया था।

इसमें प्राइम-मोडिफायर-क्लास शब्द योजना का विवरण दिया गया, जिसमें ग्राहक खाता संख्या को इंगित करने के लिए CUST-ACT-NO जैसे नाम सम्मिलित थे।

PRIME शब्द किसी सिस्टम में रुचि रखने वाली प्रमुख संस्थाओं को इंगित करने के लिए थे।

अतिरिक्त परिशोधन, योग्यता और पठनीयता के लिए संशोधक शब्दों का प्रयोग किया गया।

क्लास शब्द आदर्श रूप से किसी विशेष एप्लिकेशन के लिए प्रासंगिक डेटा प्रकारों की बहुत छोटी सूची होगी। सामान्य वर्ग के शब्द हो सकते हैं: NO (संख्या), ID (पहचानकर्ता), TXT (पाठ), AMT (राशि), QTY (मात्रा), FL (ध्वज), CD (कोड), W (कार्य) इत्यादि। व्यवहार में, उपलब्ध क्लास शब्द दो दर्जन से कम शब्दों की सूची होगी।

क्लास शब्द, सामान्यतः दाईं ओर (प्रत्यय) स्थित होते हैं, हंगेरियन नोटेशन उपसर्गों के समान ही उद्देश्य पूरा करते हैं।

क्लास शब्दों का उद्देश्य, स्थिरता के अतिरिक्त, प्रोग्रामर को किसी विशेष डेटा फ़ील्ड के डेटा प्रकार को निर्दिष्ट करना था। बूलियन (केवल दो मान) फ़ील्ड की स्वीकृति से पहले, FL (ध्वज) केवल दो संभावित मानों वाले फ़ील्ड को इंगित करेगा।

लैंग्वेज-विशिष्ट कन्वेंशन

एकमा स्क्रिप्ट

एडोब के कोडिंग कन्वेंशन और सर्वोत्तम अभ्यास ActionScript के लिए नेमिंग स्टैण्डर्ड का सुझाव देते हैं जो ज्यादातर ईसीएमएस्क्रिप्ट के अनुरूप होते हैं।[citation needed] पहचानकर्ताओं की स्टाइल जावा (प्रोग्रामिंग लैंग्वेज) के समान है।

अदा

एडा (प्रोग्रामिंग लैंग्वेज) में, पहचानकर्ताओं की एकमात्र अनुशंसित स्टाइल है Mixed_Case_With_Underscores.[19]


एपीएल

एपीएल (प्रोग्रामिंग लैंग्वेज) बोलियों में, डेल्टा (Δ) का उपयोग शब्दों के बीच किया जाता है, जैसे PERFΔSQUARE (पुराने एपीएल संस्करणों में पारंपरिक रूप से कोई लोअरकेस मौजूद नहीं था)। यदि नाम में अंडरस्कोर वाले अक्षरों का उपयोग किया गया है, तो इसके स्थान पर डेल्टा अंडरबार (⍙) का उपयोग किया जाएगा।

सी और सी++

C (प्रोग्रामिंग लैंग्वेज) और C++ में, कीवर्ड (कंप्यूटर प्रोग्रामिंग) और स्टैण्डर्ड लाइब्रेरी आइडेंटिफायर अधिकतर लोअरकेस होते हैं। सी स्टैण्डर्ड लाइब्रेरी में, संक्षिप्त नाम सबसे आम हैं (उदाहरण के लिए) isalnum किसी फ़ंक्शन के परीक्षण के लिए कि क्या कोई वर्ण अल्फ़ान्यूमेरिक है), जबकि C++ स्टैण्डर्ड लाइब्रेरी अधिकांशतः शब्द विभाजक के रूप में अंडरस्कोर का उपयोग करती है (उदा. out_of_range). सी प्रीप्रोसेसर#मैक्रो परिभाषा और विस्तार का प्रतिनिधित्व करने वाले पहचानकर्ता, कन्वेंशन के अनुसार, केवल अपरकेस अक्षरों और अंडरस्कोर का उपयोग करके लिखे गए हैं (यह विभिन्न प्रोग्रामिंग लैंग्वेज में कांस्टेंट के लिए सभी-अपर-केस पहचानकर्ताओं का उपयोग करने की कन्वेंशन से संबंधित है)। डबल अंडरस्कोर वाले या अंडरस्कोर और बड़े अक्षर से शुरू होने वाले नाम कार्यान्वयन (संकलक , स्टैण्डर्ड लाइब्रेरी) के लिए आरक्षित हैं और उनका उपयोग नहीं किया जाना चाहिए (उदाहरण के लिए) __reserved या _Reserved).[20][21] यह सतही तौर पर स्ट्रॉपिंग (वाक्यविन्यास) के समान है, किन्तु शब्दार्थ पृथक-पृथक हैं: अंडरस्कोर वर्णों को उद्धृत करने के अतिरिक्त पहचानकर्ता के मूल्य का हिस्सा हैं (जैसा कि स्ट्रॉपिंग है): का मूल्य __foo है __foo (जो आरक्षित है), नहीं foo (किन्तु पृथक नामस्थान में)।

सी#

सी शार्प (प्रोग्रामिंग लैंग्वेज)|सी# नेमिंग कन्वेंशन आम तौर पर सभी .NET लैंग्वेज के लिए माइक्रोसॉफ्ट द्वारा प्रकाशित दिशानिर्देशों का पालन करती हैं[22] (नीचे .NET अनुभाग देखें), किन्तु C# कंपाइलर द्वारा कोई कन्वेंशन प्रयुक्त नहीं की जाती है।

Microsoft दिशानिर्देश केवल इसके विशेष उपयोग की अनुशंसा करते हैं PascalCase और camelCase, पश्चात् वाले का उपयोग केवल विधि पैरामीटर नामों और विधि-स्थानीय वरिएबल नामों (विधि-स्थानीय सहित) के लिए किया जाता है const मान)। पास्कलकेस में विशेष अपवाद दो-अक्षर वाले संक्षिप्ताक्षरों के लिए बनाया गया है जो पहचानकर्ता शुरू करते हैं; इन स्थितियों में, दोनों अक्षर बड़े अक्षरों में लिखे गए हैं (उदाहरण के लिए, IOStream); बड़े संक्षिप्त शब्दों के स्थिति में ऐसा नहीं है (उदाहरण के लिए, XmlStream). दिशानिर्देश आगे अनुशंसा करते हैं कि जो नाम दिया गया है interface होना PascalCase बड़े अक्षर से पहले I, के रूप में IEnumerable.

फ़ील्ड के नेमिंग के लिए Microsoft दिशानिर्देश विशिष्ट हैं static, public, और protected खेत; फ़ील्ड जो नहीं हैं static और उसके पास अन्य पहुंच स्तर हैं (जैसे internal और private) स्पष्ट रूप से दिशानिर्देशों में सम्मिलित नहीं हैं।[23] उपयोग करना सबसे आम अभ्यास है PascalCase सभी फ़ील्ड के नामों के लिए, उन्हें छोड़कर जो मौजूद हैं private (और ना ही const और न static), जो उपयोग किए जाने वाले नाम दिए गए हैं camelCase एकल अंडरस्कोर से पहले; उदाहरण के लिए, _totalCount.

किसी भी पहचानकर्ता नाम के पहले वाणिज्यिक-एट प्रतीक लगाया जा सकता है (@), अर्थ में कोई बदलाव किए बिना। अतिरिक्त दोनों factor और @factor ही वस्तु का संदर्भ लें. कन्वेंशन के अनुसार, इस उपसर्ग का उपयोग केवल उन स्थितियों में किया जाता है जब पहचानकर्ता अन्यथा आरक्षित कीवर्ड होगा (जैसे for और while), जिसका उपयोग उपसर्ग, या प्रासंगिक कीवर्ड (जैसे कि) के बिना पहचानकर्ता के रूप में नहीं किया जा सकता है from और where), किन स्थितियों में उपसर्ग की सख्ती से आवश्यकता नहीं है (कम से कम इसकी घोषणा पर नहीं; उदाहरण के लिए, चूंकि घोषणा dynamic dynamic; वैध है, इसे सामान्यतः इस रूप में देखा जाएगा dynamic @dynamic; पाठक को तुरंत इंगित करने के लिए कि पश्चात् वाला परिवर्तनीय नाम है)।

डार्ट/फड़फड़ाना

फ़्लटर_(सॉफ़्टवेयर) में प्रयुक्त डार्ट_(प्रोग्रामिंग_भाषा) लैंग्वेज में, कन्वेंशन जावा के समान हैं, सिवाय इसके कि कांस्टेंट लोअरकैमलकेस में लिखे गए हैं। डार्ट वाक्यात्मक नियम प्रयुक्त करता है कि गैर-स्थानीय आइडेंटिफायर अंडरस्कोर से शुरू होते हैं (_) को निजी माना जाता है (चूंकि लैंग्वेज में सार्वजनिक या निजी पहुंच के लिए स्पष्ट कीवर्ड नहीं हैं)। इसके अतिरिक्त, सोर्स फ़ाइल नाम जावा के प्रति सोर्स फ़ाइल के सार्वजनिक वर्ग का पालन नहीं करते हैं, नाम नियम से मेल खाना चाहिए, इसके अतिरिक्त फ़ाइल नाम के लिए साँप_केस का उपयोग करें।[24]


जाओ

गो (प्रोग्रामिंग लैंग्वेज) में, कन्वेंशन का उपयोग करना है MixedCaps या mixedCaps बहुशब्दीय नाम लिखने के लिए अंडरस्कोर के अतिरिक्त। संरचनाओं या कार्यों का संदर्भ देते समय, पहला अक्षर बाहरी पैकेजों के लिए दृश्यता निर्दिष्ट करता है। पहला लेटर अपरकेस बनाने से कोड का वह टुकड़ा निर्यात हो जाता है, जबकि लोअरकेस इसे केवल मौजूदा दायरे में ही प्रयोग करने योग्य बनाता है।[25]


जावा

जावा (प्रोग्रामिंग लैंग्वेज) में, पहचानकर्ताओं के लिए नेमिंग कन्वेंशन विभिन्न जावा समुदायों जैसे सन माइक्रोसिस्टम्स, द्वारा स्थापित और सुझाई गई हैं।[26] नेटस्केप,[27] एम्बीसॉफ्ट,[28] आदि। सन माइक्रोसिस्टम्स द्वारा निर्धारित नेमिंग कन्वेंशन का नमूना नीचे सूचीबद्ध है, जहां CamelCase में नाम बिना रिक्त स्थान के जुड़े हुए विभिन्न शब्दों से बना है, प्रत्येक शब्द का - पहले शब्द को छोड़कर - बड़े अक्षरों में प्रारंभिक अक्षर - उदाहरण के लिए CamelCase।

Identifier type Rules for naming Examples
Classes Class names should be nouns in UpperCamelCase, with the first letter of every word capitalised. Use whole words – avoid acronyms and abbreviations (unless the abbreviation is much more widely used than the long form, such as URL or HTML).
  • class Raster {}
  • class ImageSprite {}
Methods Methods should be verbs in lowerCamelCase or a multi-word name that begins with a verb in lowercase; that is, with the first letter lowercase and the first letters of subsequent words in अपरकेस.
  • run();
  • runFast();
  • getBackground();
Variables Local variables, instance variables, and class variables are also written in lowerCamelCase. Variable names should not start with underscore (_) or dollar sign ($) characters, even though both are allowed. This is in contrast to other coding conventions that state that underscores should be used to prefix all instance variables.

Variable names should be short yet meaningful. The choice of a variable name should be mnemonic — that is, designed to indicate to the casual observer the intent of its use. One-character variable names should be avoided except for temporary "throwaway" variables. Common names for temporary variables are i, j, k, m, and n for integers; c, d, and e for characters.

  • int i;
  • char c;
  • float myWidth;
Constants Constants should be written in अपरकेस characters separated by underscores. Constant names may also contain digits if appropriate, but not as the first character.
  • static final int MAX_PARTICIPANTS = 10;

जावा कंपाइलर इन नियमों को प्रयुक्त नहीं करते हैं, किन्तु उनका पालन करने में विफल रहने से भ्रम और गलत कोड हो सकता है। उदाहरण के लिए, widget.expand() और Widget.expand() महत्वपूर्ण रूप से भिन्न व्यवहार दर्शाते हैं: widget.expand() विधि के आह्वान का तात्पर्य है expand() नामक उदाहरण में widget, जबकि Widget.expand() स्थैतिक विधि के आह्वान का तात्पर्य है expand() कक्षा में Widget.

व्यापक रूप से उपयोग की जाने वाली जावा कोडिंग स्टाइल यही निर्देशित करती है UpperCamelCase कक्षा (कंप्यूटर विज्ञान) और के लिए उपयोग किया जाए lowerCamelCase उदाहरण के लिए (कंप्यूटर विज्ञान) और विधि (कंप्यूटर विज्ञान) का उपयोग किया जाना चाहिए।[26]इस उपयोग को पहचानते हुए, कुछ एकीकृत विकास वातावरण, जैसे कि ग्रहण (आईडीई)आईडीई), कैमलकेस पर आधारित शॉर्टकट प्रयुक्त करते हैं। उदाहरण के लिए, एक्लिप्स की सामग्री सहायता सुविधा में, कैमलकेस शब्द के केवल बड़े अक्षरों को टाइप करने से कोई भी मिलान वर्ग या विधि का नाम सुझाया जाएगा (उदाहरण के लिए, एनपीई टाइप करना और सामग्री सहायता को सक्रिय करना सुझाव दे सकता है) NullPointerException).

तीन या अधिक अक्षरों के प्रथमाक्षर अपरकेस के अतिरिक्त CamelCase हैं (जैसे, parseDbmXmlFromIPAddress के अतिरिक्त parseDBMXMLFromIPAddress). कोई व्यक्ति दो या अधिक अक्षरों पर भी सीमा निर्धारित कर सकता है (उदा. parseDbmXmlFromIpAddress).

जावास्क्रिप्ट

अंतर्निहित जावास्क्रिप्ट लाइब्रेरीज़ जावा के समान नेमिंग कन्वेंशन का उपयोग करती हैं। डेटा प्रकार और कंस्ट्रक्टर फ़ंक्शन अपर कैमल केस का उपयोग करते हैं (RegExp, TypeError, XMLHttpRequest, DOMObject) और विधियाँ लोअर कैमल केस का उपयोग करती हैं (getElementById, getElementsByTagNameNS, createCDATASection). सुसंगत रहने के लिए अधिकांश जावास्क्रिप्ट डेवलपर इन सम्मेलनों का पालन करते हैं।[29] यह भी देखें: डगलस क्रॉकफोर्ड के सम्मेलन

लिस्प

अधिकांश लिस्प (प्रोग्रामिंग लैंग्वेज) बोलियों में सामान्य अभ्यास पहचानकर्ताओं में शब्दों को पृथक करने के लिए डैश का उपयोग करना है, जैसा कि with-open-file और make-hash-table. गतिशील वरिएबल नाम परंपरागत रूप से तारांकन के साथ शुरू और समाप्त होते हैं: *map-walls*. स्थिरांकों के नाम धन चिह्न से चिह्नित होते हैं: +map-size+.[30][31]


.NET

Microsoft .NET अनुशंसा करता है UpperCamelCase, जिसे अधिकांश पहचानकर्ताओं के लिए पास्कलकेस के रूप में भी जाना जाता है। (lowerCamelCase पैरामीटर (कंप्यूटर विज्ञान) और वरिएबल (प्रोग्रामिंग) ) के लिए अनुशंसित है और यह .NET लैंग्वेज के लिए साझा सम्मेलन है।[32] माइक्रोसॉफ्ट आगे अनुशंसा करता है कि किसी भी प्रकार के उपसर्ग संकेत (जिसे हंगेरियन नोटेशन के रूप में भी जाना जाता है) का उपयोग नहीं किया जाता है।[33] हंगेरियन नोटेशन का उपयोग करने के अतिरिक्त नाम को बेस क्लास के नाम से समाप्त करने की अनुशंसा की जाती है; LoginButton के अतिरिक्त BtnLogin.[34]


उद्देश्य-सी

उद्देश्य सी की सामान्य कोडिंग स्टाइल है जिसकी जड़ें स्मॉलटॉक में हैं।

शीर्ष-स्तरीय इकाइयाँ, जिनमें कक्षाएं, प्रोटोकॉल, श्रेणियाँ, साथ ही सी निर्माण सम्मिलित हैं, जिनका उपयोग वैश्विक वरिएबल और फ़ंक्शंस जैसे ऑब्जेक्टिव-सी कार्यक्रमों में किया जाता है, अपरकैमलकेस में नेमस्पेस को दर्शाते हुए छोटे ऑल-अपरकेस उपसर्ग के साथ हैं, जैसे NSString, UIAppDelegate, NSApp या CGRectMake. कांस्टेंट को वैकल्पिक रूप से छोटे अक्षर k जैसे उपसर्ग के साथ जोड़ा जा सकता है kCFBooleanTrue.

किसी ऑब्जेक्ट के इंस्टेंस वेरिएबल लोअरकैमलकेस का उपयोग करते हैं जो अंडरस्कोर के साथ उपसर्ग होता है, जैसे _delegate और _tableView.

विधि नाम कोलन द्वारा पृथक किए गए विभिन्न लोअरकैमलकेस भागों का उपयोग करते हैं जो तर्कों को सीमित करते हैं, जैसे: application:didFinishLaunchingWithOptions:, stringWithFormat: और isRunning.

पास्कल, मोडुला-2 और ओबेरॉन

विर्थियन लैंग्वेज सामान्यतः पास्कल, मोडुला-2 और ओबेरॉन का उपयोग करते हैं Capitalized या UpperCamelCase प्रोग्राम, मॉड्यूल, कांस्टेंट, प्रकार और प्रक्रियाओं के लिए पहचानकर्ता, और lowercase या lowerCamelCase गणित कांस्टेंट, चर, औपचारिक पैरामीटर और फ़ंक्शन के लिए पहचानकर्ता।[35] जबकि कुछ बोलियाँ पहचानकर्ताओं में अंडरस्कोर और डॉलर संकेतों का समर्थन करती हैं, स्नेक केस और मैक्रो केस विदेशी एपीआई इंटरफेस के अन्दर उपयोग तक ही सीमित हैं।[36]


पर्ल

पर्ल सम्मेलनों के लिए अपनी सी विरासत से कुछ संकेत लेता है। स्थानीय रूप से स्कोप्ड वेरिएबल और सबरूटीन नाम इनफ़िक्स अंडरस्कोर के साथ लोअरकेस में हैं। प्राइवेट माने जाने वाले सबरूटीन्स और वेरिएबल्स के पहले अंडरस्कोर लगा होता है। पैकेज वेरिएबल शीर्षक आवरण वाले हैं। घोषित कांस्टेंट सभी अधिकतम सीमाएँ हैं। प्राग्माटा को छोड़कर पैकेज के नाम कैमल केस हैं—उदाहरण के लिए, strict और mro-जो लोअरकेस हैं। [37] [38]


पीएचपी

PHP सिफ़ारिशें PSR-1 (PHP स्टैण्डर्ड सिफ़ारिश 1) और PSR-12 में सम्मिलित हैं।[39] PSR-1 के अनुसार, क्लास के नाम पास्कलकेस में होने चाहिए, क्लास कांस्टेंट MACRO_CASE में होने चाहिए, और फ़ंक्शन और विधि के नाम कैमलकेस में होने चाहिए।[40]


पायथन और रूबी

पायथन (प्रोग्रामिंग लैंग्वेज) और रूबी (प्रोग्रामिंग लैंग्वेज) दोनों अनुशंसित हैं UpperCamelCase वर्ग के नाम के लिए, CAPITALIZED_WITH_UNDERSCORES कांस्टेंट के लिए, और snake_case अन्य नामों के लिए.

पायथन में, यदि किसी नाम का उद्देश्य निजी सदस्य होना है, तो उसके पहले या दो अंडरस्कोर लगाए जाते हैं (पायथन में यह कमोबेश हैक है)। निजी वरिएबल केवल कन्वेंशन द्वारा पायथन में प्रयुक्त किए जाते हैं। पायथन कीवर्ड के साथ टकराव को रोकने के लिए नामों के साथ अंडरस्कोर भी जोड़ा जा सकता है। डबल अंडरस्कोर के साथ उपसर्ग लगाने से नाम मैंगलिंग#पायथन के संबंध में कक्षाओं में व्यवहार बदल जाता है। डबल अंडरस्कोर के साथ उपसर्ग और प्रत्यय - पायथन में तथाकथित डंडर (डबल अंडर) विधियां - जादुई नामों के लिए आरक्षित हैं जो पायथन ऑब्जेक्ट्स में विशेष व्यवहार को पूरा करते हैं।[41]


आर

जबकि आर (प्रोग्रामिंग लैंग्वेज) के लिए कोई आधिकारिक स्टाइल गाइड नहीं है, आर-गुरु हैडली विकम की टिडीवर्स स्टाइल गाइड अधिकांश उपयोगकर्ताओं के लिए स्टैण्डर्ड निर्धारित करती है।[42] यह मार्गदर्शिका फ़ाइल नामों में विशेष वर्णों से बचने और वेरिएबल और फ़ंक्शन नामों के लिए केवल संख्याओं, अक्षरों और अंडरस्कोर का उपयोग करने की अनुशंसा करती है। फिट_मॉडल.आर.

राकू

राकू (प्रोग्रामिंग लैंग्वेज) कमोबेश पर्ल जैसी ही परंपराओं का पालन करती है, सिवाय इसके कि यह इन्फ़िक्स हाइफ़न की अनुमति देती है - या धर्मोपदेश ' (या एकल उद्धरण) पहचानकर्ता के अन्दर (किन्तु पंक्ति में दो नहीं), बशर्ते कि इसके पश्चात् वर्णमाला वर्ण हो। राकू प्रोग्रामर अधिकांशतः अपने पहचानकर्ताओं में कबाब केस का उपयोग करते हैं; उदाहरण के लिए,

fish-food और don't-do-that वैध पहचानकर्ता हैं.

[43]


जंग

रस्ट (प्रोग्रामिंग लैंग्वेज) अनुशंसा करता है UpperCamelCase प्रकार के उपनाम और संरचना, विशेषता, एनम और एनम प्रकार के नामों के लिए, SCREAMING_SNAKE_CASE कांस्टेंट या स्थैतिक के लिए और snake_case वेरिएबल, फ़ंक्शन और संरचना सदस्य नामों के लिए।[44]


स्विफ्ट

स्विफ्ट (प्रोग्रामिंग लैंग्वेज) ने प्रत्येक व्यक्तिगत रिलीज के साथ अपनी नेमिंग कन्वेंशन को बदल दिया है। चूंकि स्विफ्ट 3.0 के साथ प्रमुख अद्यतन ने नेमिंग कन्वेंशन को स्थिर कर दिया lowerCamelCase वरिएबल और फ़ंक्शन घोषणाओं में। कांस्टेंट को सामान्यतः एनम प्रकार या स्थिर मापदंडों द्वारा परिभाषित किया जाता है जिन्हें इस तरह भी लिखा जाता है। क्लास और अन्य ऑब्जेक्ट प्रकार की घोषणाएँ हैं UpperCamelCase.

स्विफ्ट 3.0 के अनुसार सभी तृतीय पक्ष एपीआई में एपीआई नेमिंग और घोषणा सम्मेलनों को मानकीकृत करने के प्रयास में लैंग्वेज के लिए स्पष्ट नेमिंग दिशानिर्देश बनाए गए हैं।

[45]


यह भी देखें

संदर्भ

  1. Derek M. Jones "Operand names influence operator precedence decisions" An experiment investigating the effect of variable names on operator precedence selection
  2. Raymond, Eric S. (1 October 2004). "धार्मिक मुद्दे". The Jargon File (version 4.4.8 ed.). Retrieved 7 November 2011.
  3. Binkley, Dave; Davis, Marcia (2009). "To camelcase or under_score" (PDF). 2009 IEEE 17th International Conference on Program Comprehension. pp. 158–167. doi:10.1109/ICPC.2009.5090039. ISBN 978-1-4244-3998-0. S2CID 1450798.
  4. Naming a Package
  5. "सीएसएस संदर्भ". Mozilla Developer Network. Retrieved 2016-06-18.
  6. "StackOverflow – What's the name for snake_case with dashes?".
  7. "Programmers – If this is camelCase what-is-this?".
  8. "Camel_SNAKE-kebab". GitHub. September 2019.
  9. UnderscoreVersusCapitalAndLowerCaseVariableNaming
  10. jwfearn (5 September 2012). "Revisions to jwfearn's answer to What's the name for dash-separated case?".
  11. Living Clojure (2015), by Carin Meier, p. 91
  12. lodash: kebabCase
  13. 13.0 13.1 13.2 "naming - What are the different kinds of cases?". Stack Overflow. Retrieved 2020-08-16.
  14. "A brief list of programming naming conventions". deanpugh.com (in British English). 2018-03-20. Retrieved 2020-08-16.
  15. "PSR-1: Basic Coding Standard - PHP-FIG". www.php-fig.org (in English). Retrieved 2020-09-04.
  16. "Naming conventions". doc.rust-lang.org. Retrieved 2023-05-02.
  17. "camel-snake-kebab". camel-snake-kebab (in English). Retrieved 2020-08-16.
  18. "गलत कोड बनाना गलत दिखना". Joel on Software. 11 May 2005.
  19. "3.2.1 Names - Chapter 3 - Ada 95 QUALITY AND STYLE Guide".
  20. "ISO/IEC 9899:1999 Programming languages – C". ISO.
  21. "ISO/IEC 14882:2011 Information technology – Programming languages – C++". ISO.
  22. "नामकरण दिशानिर्देश". Microsoft. 15 September 2021.
  23. "प्रकार सदस्यों के नाम". Microsoft. 15 September 2021.
  24. "Effective Dart - the Dart Style Guide".
  25. "Effective Go - the Go Programming Language".
  26. 26.0 26.1 "Code Conventions for the Java Programming Language", Section 9: "Naming Conventions"
  27. "NETSCAPE'S SOFTWARE CODING STANDARDS GUIDE FOR JAVA",Collab Software Coding Standards Guide for Java Archived 3 March 2009 at the Wayback Machine
  28. "AmbySoft Inc. Coding Standards for Java v17.01d"
  29. Morelli, Brandon (17 November 2017). "5 JavaScript Style Guides – Including AirBnB, GitHub, & Google". codeburst.io. Retrieved 17 August 2018.
  30. "Variables".
  31. Naming conventions on CLiki
  32. Microsoft .NET Framework Capitalization Styles
  33. .NET Framework Developer's Guide – General Naming Conventions
  34. [Framework Design Guidelines, Krzysztof Cwalina, Brad Abrams Page 62]
  35. Modula-2 Name Convention
  36. Foreign API Identifiers in Modula-2 Name Convention
  37. "पर्ल स्टाइल गाइड".
  38. "perlmodlib – constructing new Perl modules and finding existing ones".
  39. "PHP मानक सिफ़ारिशें".
  40. "PSR-1: Basic Coding Standard - PHP-FIG".
  41. Style Guide for Python Code PEP8
  42. Style Guide for RCode
  43. "General rules of Perl 6 syntax".
  44. "नामकरण की परंपरा". doc.rust-lang.org (in English). Retrieved 2018-02-04.
  45. "स्विफ्ट.ओआरजी एपीआई डिज़ाइन दिशानिर्देश".


बाहरी संबंध