एक प्रोग्रामर, कई भाषाएँ - दुविधा का नाम


14

जब आप कई प्रोग्रामिंग भाषाओं में काम करते हैं, तो आपके सामने एक समस्या आती है ...

एक भाषा में मान्य नाम (पहचानकर्ता) दूसरे में अमान्य है। उदाहरण के लिए...

var new function thisजावास्क्रिप्ट में एक कीवर्ड हैं, लेकिन आप उन्हें पायथन में स्वतंत्र रूप से उपयोग कर सकते हैं। इसी तरह list dict defसमस्याओं के बिना जावास्क्रिप्ट में इस्तेमाल किया जा सकता है।

यह एक बहुत ही आम है और कुछ प्रोग्रामर आमतौर पर जल्दी से परिचित हो जाते हैं जब वे कई भाषाओं में प्रोग्राम करते हैं।

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

तो, मेरा सवाल यह है कि आप क्या रणनीति अपनाते हैं ...

  • बस उन सभी भाषाओं में मौजूद सभी आरक्षित शब्दों का एक संघ लें जो आप उपयोग करते हैं, हर किसी को एक सूची सौंपें और उनके उपयोग को रोक दें?
  • "संदर्भ स्विचिंग" होने पर विविधता को स्वीकार करें और अतिरिक्त दर्द उठाएं
  • एक मध्यवर्ती जमीन को अपनाएं जहां एक भाषा दूसरे का उपयोग कर सकती है, लेकिन इसके विपरीत नहीं

(नोट: मैं केवल इस सवाल में अजगर और जावास्क्रिप्ट के बारे में बात कर रहा हूं ... लेकिन कृपया इस सवाल का जवाब अधिक व्यापक रूप से दें)

-- अपडेट करें --

सारे सवालों के जवाब देने के लिए धन्यवाद। इसलिए आम सहमति जो मुझे उभरती दिखाई दे रही है, वह यह है कि प्रोग्रामर किसी भी नाम का उपयोग करने दें, चाहे वे अन्य भाषाएं क्यों न करें - जब तक नाम वर्णनात्मक होते हैं, तब तक उसे नुकसान नहीं होता है।


1
या बस आवश्यकता है कि प्रत्येक चर नाम ए से शुरू हो $। यह PHP, जावास्क्रिप्ट और कुछ C / C ++ कंपाइलर में काम करता है । सभी गंभीरता में, यह एक बात है कि PHP सही IMHO है।
जॉय एडम्स

जवाबों:


46

अपने अनुभव के 30+ वर्षों में काफी कुछ भाषाओं में प्रोग्राम करने के बाद, मैं कहूंगा कि नामकरण मानकों को खोजने की कोशिश करना जो किसी भी भाषा में काम करेंगे शायद आकाश विचार में एक पाई है।

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

C को सीखने और पास्कल सिंटैक्स का दूसरी भाषा में उपयोग करने की कोशिश न करने के कारण मुझे अधिक उत्पादक बना दिया गया, क्योंकि इसने मुझे और अधिक आरामदायक बना दिया।

मुझे लगता है कि आप संभावित रूप से अपने प्रोग्रामरों को एक भाषा में कुछ करने से रोककर उन्हें विवश करेंगे, सिर्फ इसलिए कि आप इसे किसी अन्य भाषा में उपयोग करना गलत है।

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


3
नाम जो समझ में आते हैं वे सभी कारण हैं जिनकी आपको आवश्यकता है।
जेएफओ

24

आपको पहली सूची में "सूची", "नया", "संस्करण", "यह" नामकरण नहीं होना चाहिए, क्योंकि वे किसी भी भाषा में पर्याप्त वर्णनात्मक नहीं हैं।


2
Ditto "फ़ंक्शन"। यदि यह एक कीवर्ड नहीं है, तो यह सिर्फ होने के लिए नहीं है।
MPelletier

11

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


7

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


5

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


5

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

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

BTW, न तो सूची और न ही तानाशाह पायथन में एक आरक्षित शब्द है। वे चर नाम के रूप में इस्तेमाल किया जा सकता है, हालांकि बहुत घटिया हैं।


3

मेरे अनुभव में, इसके लिए व्यापक नामकरण परंपराएँ हैं जो सभी भाषाओं पर लागू होती हैं। चाहे वह जावास्क्रिप्ट हो, सी #, या कुछ अन्य कायरता भाषा, जिस तरह से चर और वर्गों का नाम लिया जाता है वह एक कोड आधार के भीतर एक मानक बन सकता है जो कि मैं आमतौर पर इस मुद्दे को हल करना देखूंगा। सम्मेलनों को सभी की सहमति से सहमति दी जा सकती है, बस बहुमत एक दिशानिर्देश, प्रबंधन कह रहा है, "यह है कि हम इसे कैसे करते हैं," या कुछ अन्य संभावनाएं जो मैं कल्पना करता हूं।

मैं शायद ही कभी आपके द्वारा वर्णित पहचानकर्ता समस्या को देखता हूं क्योंकि मेरा वर्ग या चर नाम ज्यादातर समय वर्णनात्मक होता है जो इतनी आसानी से संघर्ष नहीं करता है। एक ही समय में, यदि कोई अन्य के साथ काम कर रहा है, तो टीम स्पष्टता से कैसे काम करना चाहती है, यह महत्वपूर्ण बिंदु है।


2

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

यदि आप एक भाषा से दूसरी भाषा में बढ़ते कोड की योजना बना सकते हैं, तो आपको निषिद्ध नामों की सूची की आवश्यकता हो सकती है। उदाहरण के लिए, मेरा सी कोडिंग प्रैक्टिस डॉक्यूमेंट नए या वर्ग को एक चर के रूप में उपयोग करने से रोकता है क्योंकि यह कोड को C ++ में पोर्ट के लिए कठिन बना देता है। उस स्थिति में, नियमों को निर्धारित करना उचित है जो उस नौकरी को आसान बनाते हैं, क्या यह आवश्यक हो जाना चाहिए,


-2

बस निचले मामले में अग्रणी CamelCase से चिपके रहते हैं। यह हर जगह काम करता है। इसे असंगत प्रणालियों के बीच सबसे कम आम भाजक की तलाश कहा जाता है, और आप खुद को अक्सर ऐसा करते हुए पाएंगे!


5
कुछ भाषाओं को छोड़कर पहले अक्षर का मामला महत्वपूर्ण वाक्यविन्यास है।
कार्ल बेज़ेलफेल्ट

1
... और यह कई भाषाओं में स्थापित सांस्कृतिक अर्ध-मानक का उल्लंघन करता है।
tdammers

हंगेरियन नोटेशन कैमलकेस ...
;;

@ कार्ल: जाहिर है कि यह सुझाव भाषा के दायरे तक सीमित है। क्या आप जानते हैं कि जावा एक डॉलर चिह्न के साथ चर नाम शुरू कर सकता है? मैंने जावा कोड देखा है जो PHP की तरह दिखता है, यह स्पष्ट था कि पिछले प्रोग्रामर ने प्रोग्राम करना कहां सीखा है!
डॉटान्चेन

@dotancohen: मुझे याद है कि कई साल पहले एक हॉबी मैगज़ीन में पास्कल कार्यक्रम को देखा था, जब पास्कल सिर्फ दृश्य बना रहा था। यह कोड की संरचना से स्पष्ट रूप से स्पष्ट था (और यह तथ्य कि उन्होंने उप- संस्करण और कार्यों के लिए मूल्यों को पारित करने के लिए वैश्विक चर का उपयोग किया था) यह कार्यक्रम उन सर्वोत्तम बुनियादी कार्यक्रमों में से एक था जिन्हें मैंने कभी पास्कल लिखा है। ;-)
ज़ेक हेंसल
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.