क्या वैरिएबल का नाम आईडी या आईडी होना चाहिए? [बन्द है]


126

यह थोड़ा पांडित्यपूर्ण है, लेकिन मैंने देखा है कि कुछ लोग इसमें उपयोग Idकरते हैं:

private int userId;
public int getUserId();

और अन्य उपयोग करते हैं:

private int userID;
public int getUserID();

क्या इनमें से एक दूसरे से बेहतर नाम है? क्यों? मैंने इसे बड़ी परियोजनाओं में बहुत असंगत तरीके से देखा है। अगर मैं एक ऐसा मानक स्थापित करूं, जिससे अधिकांश लोग परिचित हों? पारंपरिक मानक कौन सा है?


40
संगति सबसे महत्वपूर्ण बात है जो मायने रखती है। ऊंट का मामला हो, या अंडरस्कोर या व्हाट्सएप का। निरतंरता बनाए रखें।

38
अपनी भाषा के XML APIs को देखें कि वे इसे कैसे करते हैं। जावा नाम कक्षाएं जैसे SAXParserऔर DOMException.नेट नाम कक्षाएं पसंद करते हैं XmlDocument। उसके आधार पर, मैं जावा में "आईडी", सी # में "आईडी" कहूंगा।
luiscubal

1
लेकिन कन्वेंशन के द्वारा, अपर-केस आइडेंटिवर्स का उपयोग स्थैतिक क्षेत्रों के लिए जावा में किया जाता है, इसलिए बेस फील्ड के लिए "आईडी" नाम सबसे अच्छा नहीं है। और इसमें निरंतरता आती है ...
डेन्यूबियन नाविक

8
क्या आप चर नाम देंगे EGOऔर SuperEGO? मैंने ऐसा नहीं सोचा था। ;)
कोजिरो

4
क्या?! संगति? क्रोध युद्ध कहाँ है ?! यही है, मैं अपने आप को पवित्र ऊँट-केस सिंटेक्स लौ के रक्षक के रूप में नामांकित करता हूँ और इसके द्वारा यह घोषणा करता हूँ कि इसे एक्रायोनीज़ के लिए ऑल-कैप के साथ करना नोब्स के लिए है। इसके अलावा, ऊपर से टॉयलेट पेपर रोल करना चाहते हैं, जब तक कि आपके पास बिल्लियां न हों, जो अजीबोगरीब काम करते हों, इस मामले में वे बहुत कठिन समय रखते हैं, क्योंकि टॉयलेट पेपर को नीचे की तरफ से रोल करने के लिए सेट किया जाता है, जो इस तरह के पाखंड के लिए स्वीकार्य है। बिल्ली के मालिक। मुझे नहीं पता कि मुझे उस पर फैसला क्यों लेना है। बॉब टॉयलेट-रोल-डायरेक्शन की पवित्र ज्योति के रक्षक हैं।
एरिक रिपेन

जवाबों:


56

इन मामलों में पालन करने के लिए सबसे महत्वपूर्ण नियम स्थिरता है: जैसा कि हर कोई करता है।

उदाहरण के लिए, अपनी भाषा के XML APIs को देखें कि वे इसे कैसे करते हैं।

की तरह जावा नाम कक्षाएं SAXParser और DOMException , जैसे नेट नाम कक्षाएं XmlDocument

उसके आधार पर, मैं जावा में "आईडी", सी # में "आईडी" कहूंगा।

हालाँकि, मैंने देखा है कि जावा ईई 6 में एनोटेशन नाम है @Id( प्रलेखन देखें ), इसलिए ऐसा लगता है कि जावा "आईडी" को केवल एक सामान्य शब्द मानता है।


@ कोई एनोटेशन वर्गनाम का बिंदु, एक चर नाम नहीं। गलत उदाहरण।
jwenting

3
SAXParser हो सकता है (और सौभाग्य से) SimpleAPIforXMLParser (या यहां तक ​​कि SimpleApplicationProgramingInterfaceforExtesibleMarkupLanguageParser) हो सकता है। प्रत्येक पूंजी अक्षर शब्द की भीख है। तो जावा में भी यह "Id" होना चाहिए
user470365

2
@jwenting समस्या यह पता लगा रही है कि क्या "आईडी" को एक शब्द की तरह माना जाता है या दो शब्दों की तरह। @Idयह कहता है कि यह एक एकल शब्द है, इसलिए चर का नाम "आईडी" होगा।
ल्यूकसुबल

SAX एक परिचित है जबकि Id नहीं है।
नागवार

8
आप IdC # (और .NET सामान्य रूप से) का उपयोग करने के बारे में सही हैं , लेकिन एक अलग कारण से। नियम 2-अक्षर के संक्षिप्तिकरण के सभी अक्षरों को कैपिटल कर रहा है (उदाहरण के लिए IPAddress) और केवल लंबे अक्षरों के पहले अक्षर को कैपिटलाइज़ करना (जैसे कि XmlDocumentआपने दिया उदाहरण )। लेकिन Idऔर Okइस नियम के अपवाद हैं, विशेष रूप से उल्लेख किया गया है। पूर्ण विवरण के लिए, लेख Capitalization Rules for Acronymsका अनुभाग Capitalization Conventionsदेखें। लेकिन यहां तक ​​कि Microsoft उस नियम (जैसे DbConnectionबनाम DBNull) को तोड़ता है
Allon Guralnek

110

संगति राजा है; एक या दूसरे को चुनें, लेकिन इसे हर जगह लगातार करें।

उस ने कहा, मैं पहली भिन्नता को पसंद करता हूं, क्योंकि यह कैमलकेस का उल्लंघन नहीं करता है (ऐसा करने का मतलब है कि आपको याद करने के लिए दो शैली नियम हैं, न कि केवल एक)।

दो बड़े अक्षरों कभी कभी की वजह से प्रयोग किया जाता है इस है, लेकिन एक आईडी वास्तव में सिर्फ ईद-entification का एक रूप है।


18
यदि कोई कंप्यूटर प्रोग्राम मेरी आईडी एक्सेस करने की कोशिश कर रहा है, तो मुझे यह पसंद नहीं आएगा।
18


19
@SMMcSomething: Ick। SenderUserId
रॉबर्ट हार्वे

5
जबकि मैं आपसे सहमत हूं कि "आईडी" पसंदीदा तरीका है जहां मैं देख सकता हूं कि भ्रम की स्थिति कहां है: दिन-प्रतिदिन की बातचीत में हम वास्तव में इसे कहते हैं जैसे कि यह एक संक्षिप्त रूप था, जैसे "क्या मैं आपकी आईडी देख सकता हूं?"
500 - आंतरिक सर्वर त्रुटि

3
ऊंट मामले में अन्य योगों को देखें। सोपप्रोटोकॉल है, सोपप्रोटोकॉल नहीं। पहचान दस्तावेज के लिए आईडी छोटा है, इसलिए मैं यह नहीं देखता कि ऊंट के मामले में इसे असाधारण तरीके से क्यों माना जाए। उस ने कहा, मैं userId की तुलना में लगातार इस्तेमाल किया गया userID पसंद करूंगा और userID ने मेरे प्रोग्राम में असंगत रूप से उपयोग किया है।
नील

76

TL; DR: .NET क्लास लाइब्रेरीज़ के संदर्भ में, Microsoft अनुशंसा करता है कि आप Id का उपयोग करें। यह थोड़ा जवाबी है, क्योंकि यह एक संक्षिप्त नाम का एक दुर्लभ उदाहरण है जिसकी अनुमति / सिफारिश की जाती है (संक्षिप्त रूप से आम तौर पर इसे फेंक दिया जाता है)।

यदि हम C # या .NET क्लास लाइब्रेरी कन्वेंशनों के बारे में बात कर रहे हैं, तो Microsoft के पास कुछ अच्छी तरह से परिभाषित नामकरण दिशानिर्देश उपलब्ध हैं। कई तरह के मुद्दों पर कई स्पष्टीकरणों के साथ, उन्हें अच्छी तरह से समझा जाता है - वास्तव में, प्रत्येक डेवलपर को पूरे डिज़ाइन दिशानिर्देश अनुभाग को पढ़ने के लिए कुछ समय लेना चाहिए ।

जब समकितों की बात आती है , तो अंगूठे का नियम है: दो अक्षर के योगों के लिए, आप उन्हें ऊपरी मामला (जहाँ पास्कल मामला लागू है) रखते हैं, इसलिए उदाहरण IOStreamएक वर्ग का नाम हो सकता है। लंबे समय तक संक्षिप्त रूप से, आप बाकी के बाकी मामलों को कम करते हैं, जैसे XmlDocumentया HtmlParser। यह वास्तव में एक बहुत ही अस्पष्ट नियम है (जहां कोई शब्द समाप्त होता है और अगले शुरू होता है, जब तक आप दो-अक्षर वाले शब्द का पीछा नहीं कर रहे हैं) के रूप में कोई भ्रम नहीं है, और आप बहुत जल्दी इसकी आदत डाल लेते हैं।

तो, क्या यह आईडी, या आईडी है? Microsoft के अनुसार, यह वह नहीं हो सकता है जो आप सोचते हैं:

परिवर्णी शब्द में संक्षिप्त रूप से भिन्न एक संक्षिप्त नाम एक शब्द को छोटा करता है। उदाहरण के लिए, आईडी एक है पहचानकर्ता के लिए संक्षिप्त नाम । सामान्य तौर पर, पुस्तकालय के नाम संक्षिप्त रूप का उपयोग नहीं करना चाहिए।

पहचानकर्ता में उपयोग किए जा सकने वाले दो संक्षिप्त नाम ID और OK हैं। पास्कल-कैसडेड पहचानकर्ताओं में उन्हें आईडी, और ओके के रूप में दिखाई देना चाहिए। यदि ऊंट-आवरण पहचानकर्ता में पहले शब्द के रूप में उपयोग किया जाता है, तो उन्हें क्रमशः आईडी और ओके के रूप में दिखाई देना चाहिए।

वास्तविक रूप से, मुझे वास्तव में यकीन नहीं है कि जब यह अंतर दिशानिर्देशों में दिखाई देने लगा था, लेकिन कुछ साल पहले (लगभग 3.0 / 3.5) कक्षा पुस्तकालयों में सामान्य नामकरण की प्रवृत्ति आईडी से आईडी में चली गई थी।


1
यह वह दिशानिर्देश है जिसका मैं आमतौर पर पालन करता हूं। चूंकि आईडी एक संक्षिप्त नाम है और एक संक्षिप्त नाम नहीं है, मैं हमेशा 'आईडी' का उपयोग करना पसंद करता हूं।
टॉबी

मैं ID becuase का उपयोग करता हूं फिर यह सम्मेलन को तोड़ता है और अद्वितीय होने के रूप में बाहर खड़ा है, और मुझे उस की विडंबना पसंद है :)
RhysW

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

@ टॉमहॉटिन-टैक्लाइन आप एक दिलचस्प बिंदु बनाते हैं, हालांकि मुझे संदेह है कि यह संदर्भ पर निर्भर करता है। एक व्यक्ति वस्तु पर एक IDNumber संपत्ति की तरह कुछ बहुत मतलब होगा, लेकिन एक VehicleId के लिए "वाहन पहचान दस्तावेज" बनाम "वाहन पहचानकर्ता" के रूप में पढ़ने के लिए? प्रोग्रामिंग संदर्भों में, पहचानकर्ता किसी भी चीज़ के लिए एक बहुत ही सामान्य शब्द है जो विशिष्ट रूप से एक उदाहरण की पहचान करता है, और मैं तर्क दूंगा कि यह यहां अधिक है।
डेनियल बी

@ डैनियलबी कंप्यूटर भाषाओं में, यहां तक ​​कि एसक्यूएल, "पहचानकर्ता" आमतौर पर एक नाम को संदर्भित करता है, जैसे कि एक कॉलम का नाम। आमतौर पर यह "पहचान" के लिए संक्षिप्त हो जाता है। वाहन एक दिलचस्प उदाहरण है क्योंकि स्थापित VIN योजनाएं (वाहन पहचान संख्या) हैं। एक विशिष्ट प्रोग्रामिंग संदर्भ में, एक इकाई के लिए "दस्तावेज़" एक संख्या है (यहां तक ​​कि एक अक्षम्य क्षमता भी हो सकती है)।
टॉम हॉकिन -

15

मैंने कुछ कोडिंग कन्वेंशन के दस्तावेज़ में बहुत अच्छी व्याख्या पढ़ी। केमलकेस हमेशा, संक्षिप्त और संक्षिप्त के लिए इस्तेमाल किया जाना चाहिए, क्योंकि यह आसान है शब्द सीमाओं भेद करने के लिए (तुलना XmlIdWriterकरने के लिए XMLIDWriter)।


12
यहाँ शब्द सीमाओं को अलग करने के लिए एक बेहतर विचार है: वास्तविक शब्द सीमाएँ! xml_id_writer
काज

4
@ काज़ वेल, डुह! हालांकि, CamelCase का उपयोग कुछ भाषाओं में पारंपरिक रूप से किया जाता है और यह ऐसी स्थितियों में अंडरस्कोर का उपयोग करने के लिए जगह से बाहर दिखेगा। संगति राजा है, जैसा कि पहले उल्लेख किया गया है।
गिल्डन

1
CamelCase का उपयोग सिर्फ इसलिए कि कुछ भाषा के मूल पुस्तकालयों का उपयोग यह स्थिरता नहीं है, बल्कि अनुरूप है।
कज़

3
@ काज: कोड कन्वेंशन की तुलना में आपकी दुकान में लड़ने के लिए आपके पास बड़ी लड़ाई है।
रॉबर्ट हार्वे

2

जैसा कि हम जावास्क्रिप्ट के डिफ़ॉल्ट फ़ंक्शन getElementById () में देख सकते हैं; ईद पर लिखा है कैमल केस ...

यदि किसी अंडरस्कोर के साथ प्रयोग किया जाता है तो 'id' का प्रयोग करें। उदाहरण: user_id

यदि किसी अंडरस्कोर के बिना किसी वेरिएबल को अलग-अलग शब्दों को अलग करने के लिए 'आईडी' का उपयोग करें। उदाहरण: userId

यदि इसका एकल शब्द चर है तो यह पूर्ण लोअरकेस में होना चाहिए, यदि एकाधिक शब्द var है तो कम कैमल केस का उपयोग करें। उदाहरण: thisIsExample

लेकिन मैं CAPS में सभी को 'ID' की अनुशंसा नहीं करूंगा क्योंकि हम आम तौर पर CONSTANTS को परिभाषित करने के लिए सभी कैप का उपयोग करते हैं।


आपके तीसरे पैराग्राफ में, आपका उदाहरण आपके पाठ से मेल नहीं खाता है?
बरबाद

@ruakh thanx .. आयत ..
गुप्ता

0

सबसे पहले, संक्षिप्त नाम लिखें।

दूसरा, यदि संक्षिप्त नाम सुपर प्रसिद्ध है, तो मैं ऊंट मामले का उपयोग करने की सलाह देता हूं।

ऐसा इसलिए है क्योंकि आपको उस के अर्थ पर विचार करने की आवश्यकता नहीं है। बस एक सामान्य शब्द के रूप में समझो

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