परिवर्णी शब्द के साथ जावा नामकरण कन्वेंशन [बंद]


218

निम्नलिखित जावा वर्ग के लिए सही नाम क्या है: DVDPlayerया DvdPlayer?


93
मुझे समरूप से नफरत है। DigitalVersatileDiscPlayerआगे का रास्ता है।
टॉम हॉल्टिन -

7
मजाक के लिए +1 से टॉम। मुझे यह सवाल मददगार लगता है अगर "सही" को "मानक" या "सबसे विशिष्ट" के रूप में पुन: व्याख्या किया जाता है। स्वीकृत उत्तर महान है!
जॉन कूम्स ने

6
मेरे लिए यह एक शब्द के रूप में इस तरह के योगों के बारे में सोचने के लिए समझ में आता है और जैसे मैं सम्मेलन और उपयोग का पालन करता हूं DvdPlayer
डैनियल

7
स्टाइल गाइड के पास इसके बारे में कहने के लिए निम्नलिखित है: "एक संक्षिप्त नाम को एक शब्द के रूप में प्रारूपित करें यदि यह एक लंबे वर्ग के नाम का हिस्सा है।" , तो DvdPlayerजाने का रास्ता है। (और, टॉम के लिए, "पूरे शब्दों का उपयोग करें और संक्षिप्त रूप का उपयोग करने से बचें जब तक कि संक्षिप्त रूप लंबे रूप से अधिक व्यापक रूप से उपयोग नहीं किया जाता है।" , और मुझे लगता है कि "डीवीडी" "डिजिटल
वर्सटाइल

आप निश्चित रूप से "डिस्कस" का मतलब था, है ना? :)
विले ओकारिनेन

जवाबों:


237

चूंकि ऐसा लगता है कि उत्तर यह है कि जावा में इसके लिए कोई एकल मानक नहीं है, इसलिए मैं यह ध्यान देना चाहूंगा कि .NET फ्रेमवर्क डिजाइन दिशानिर्देश इसे निर्दिष्ट करते हैं।

विषय बंद होने के लिए मुझे स्लैम करने से पहले, कृपया याद रखें कि जावा और .NET फ्रेमवर्क के लिए क्लास नामकरण दिशानिर्देश काफी समान हैं, जो .NET दिशानिर्देशों को प्रेरक संदर्भ के रूप में उपयोगी बनाता है।

सामान्य नियम

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

लघुरूप

.NET फ्रेमवर्क दिशानिर्देश, संक्षिप्तीकरण का उपयोग नहीं करने की सलाह देते हैं (जैसे कि परिवर्णी शब्द के विपरीत), सिवाय इसके कि दो सामान्य संक्षिप्ताक्षर 'ID' और 'OK' पहचानकर्ताओं में उपयोग किए जा सकते हैं। एक संक्षिप्त नाम का उपयोग करते समय, मिश्रित मामले Idका उपयोग हमेशा कैमलकेस पहचानकर्ता के पहले शब्द को छोड़कर किया जाता है (जैसा कि पास्कलकेस पहचानकर्ता के विपरीत)।

जावा में इस सम्मेलन का पालन केवल कुछ समय के लिए किया जाता है। एक नज़र डालिए कि कैसे मिश्रित वर्तनी getIDऔर getIdजेसीएल में हैं। (उस पृष्ठ को नीचे स्क्रॉल करें भाग)। में जावा 8 संस्करण हालांकि, getIdअधिक से अधिक है, जो संकेत PascalCase सम्मेलन आजकल पसंद किया जाता है प्रयोग किया जाता है। जब संभव हो तो केवल संक्षिप्त रूप से बचना सबसे अच्छा है।

संक्षिप्त में

.NET फ्रेमवर्क दिशानिर्देशों में कहा गया है कि 'IO' जैसे दो अक्षर वाले दोनो अक्षरों के लिए समान मामला होना चाहिए। इसलिए PascalCase पहचानकर्ताओं (एक वर्ग नाम की तरह) के लिए DBRate, जबकि आप एक कैमसेल कैसिइन पहचानकर्ता ( एक स्थानीय चर की तरह) के लिए हो सकते हैं ioChannel

यह निश्चित रूप से जावा में प्रचलित सम्मेलन के रूप में भी प्रतीत होता है।

लंबे समय तक

.NET फ्रेमवर्क दिशानिर्देशों का सुझाव है कि तीन अक्षरों को जोड़ते हैं या अब एक कैस्केलेस पहचानकर्ता के पहले शब्द को छोड़कर पास्कलकेस और कैमलकेस पहचानकर्ताओं के लिए मिश्रित मामले का उपयोग करते हैं। इस प्रकार एक वर्ग नाम आपके पास हो सकता है XmlDocument, जबकि एक स्थानीय चर नाम दिया जा सकता है httpRequest

जावा में इस सम्मेलन का हमेशा पालन नहीं किया जाता है। चार वर्ण समरूपता आमतौर पर मिश्रित मामले का उपयोग करते हैं, लेकिन यहां तक ​​कि जेसीएल भी तीन अक्षर के योगों के अनुरूप नहीं है। उनमें से अधिकांश सभी बड़े प्रतीत होते हैं, जैसे 'URL', 'XML', 'SQL' और 'DOM', लेकिन 'Jar' जैसे कुछ अपवाद भी हैं।

निष्कर्ष

जावा के लिए:

4+ अक्षर योग के लिए, मिश्रित मामले का उपयोग करें। मानक पुस्तकालय ऐसा करता है, और यह सिर्फ अच्छा समझ में आता है।

3 अक्षर के योग के लिए, आप JCL की तरह सभी अपरकेस का उपयोग कर सकते हैं, या आप .NET फ्रेमवर्क जैसे मिश्रित मामले का उपयोग कर सकते हैं। किसी भी तरह से, सुसंगत हो।

2 अक्षर के योग के लिए, सभी अपरकेस का उपयोग करें।

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


11
अच्छा लगा, अच्छा प्रयास!
एलिरन मलका

1
मुझे यह पसंद है, सिवाय इसके कि यह 3- और 2-अक्षर के योग के लिए CAPS के अनुरूप नहीं है। (शायद मैं एक शुद्धतावादी के ज्यादा के लिए हूँ, लेकिन व्यावहारिक कारणों के लिए स्वीकार किए जाते हैं जवाब देखने के साथ ही, भ्रम कारक है।।)
जॉन Coombs

1
@JCbs: खैर, 2 अक्षरों के लिए असंगतता कुछ ऐसी है, IpAddressजो कई लोगों को भयानक लगती है। व्यक्तिगत रूप से जब मुझे जावा कोड लिखने की आवश्यकता होती है, तो मैं 3 अक्षर के योग के लिए मिश्रित मामले के साथ जाता हूं, केवल दो अक्षरों को एक विशेष मामले के रूप में छोड़ देता हूं।
केविन कैथार्ट

5
क्या होगा यदि आपके वर्ग के नाम में कई आसन्न दो-अक्षर वाले शब्द हैं? चाहे आप कुछ भी करें, यह 'गलत' लगेगा - USGFCharset, UsGfCharset, US_GFCharset ...
केविन

3
वास्तव में अच्छा जवाब। लेकिन व्यक्तिगत रूप से मुझे अलग-अलग नामकरणों के नाम पर .NET दिशानिर्देशों का विचार पसंद नहीं है, जो कि समकाल की लंबाई पर निर्भर करता है और यह संक्षिप्त नाम है या नहीं। वास्तव में कौन परवाह करता है और एक परिचित की लंबाई की जांच करता है? या अगर यह एक संक्षिप्त नाम है? मैं नामकरण के लिए एक कंबल नियम पसंद करता हूं। समस्या तब आती है जब आप जिस भी नियम के साथ जाना चाहते हैं, उससे अलग-अलग सम्मेलनों के साथ तीसरे पक्ष के पुस्तकालयों का उपयोग करते हैं।
अमानी किलुमंगा

98

कोई "सही" उत्तर नहीं है। बस प्रथाओं और सम्मेलनों का एक सेट है जो आपके अन्य उपकरणों के साथ बेहतर खेलते हैं।

इसलिए मुझे पसंद है DvdPlayer। ग्रहण में के रूप में आप कर सकते हैं इसे और अधिक उपयोगी है Ctrl+ Shift+ Tऔर प्रत्येक शब्द के पहले अक्षर से कक्षाएं लेने।

वैकल्पिक शब्द


19
oooo यह एक उपयोगी ग्रहण टिप है। धन्यवाद!
पीटर पेर्क

1
(+1) एक अच्छी टिप। मेरे लिए इस सवाल का जवाब :-)
Asaf

2
उस वर्ग को खोजने के लिए बस "SIO" पर्याप्त है।
फिन

7
यह भी उदाहरण के लिए ग्रहण - ऑटो-पूर्ण में कहीं और काम करता है। 'MyDvdCoverImage' नाम की एक विधि / चर है? - बस टाइप करें mDCI Ctrl + Space
teaboy

3
पहले से सेट किए गए कुछ शॉर्टकट भी हैं, जैसे sysout Ctrl + Space, आपको System.out.println देता है। वही (कोशिश) और (के लिए) जाता है
15

50

मैंने दोनों को जंगल में इस्तेमाल करते हुए देखा है, और लगता है कि सूर्य DVDPlayerशैली के लिए जा रहा है। मैं पसंद करता हूं DvdPlayer, हालांकि, क्योंकि यह स्पष्ट है कि जहां शब्द सीमाएं हैं, भले ही कई लगातार जोड़ रहे हों, जैसे कि HTTPURLConnection


3
इस प्रकार लिखना भी तेज़ है।
एट्स गोरल

6
मुझे लगता है कि "DVDPlayer" शब्द सीमाओं को अधिक स्पष्ट बनाता है। "डीवीडी" एक शब्द नहीं है, जबकि "डीवीडी" शब्द "डिजिटल वर्सटाइल डिस्क" के लिए एक संक्षिप्त रूप है। तो "डीवीडी प्लेयर" में वास्तविक शब्द सीमाएं "डी", "वी", "डी", और "पी" पर हैं।
ग्रेग ब्राउन

19
@GregBrown: एक डीवीडी एक छेद के साथ एक डिस्क है, इसके अलावा कोई भी आपको इसका पूरा नाम नहीं जानता है, न ही इसके बारे में परवाह करता है। और DvdPlayer का उपयोग करना कहीं अधिक व्यावहारिक है।
इगोर रोड्रिगेज

4
@GregBrown: वास्तव में यह कम से कम ग्रहण में अधिक व्यावहारिक है, जहां ऊँट-केस की मान्यता के साथ एक दर्द है: यानी कि DvdPlayer के साथ आप "DP" टाइप कर सकते हैं और DvdPlayer का चयन करने के लिए विकल्प प्राप्त करने के लिए Ctrl + 1 दबा सकते हैं, लेकिन यदि आपके पास DVDPlayer था जिसे आपको "DVDP" लिखना होगा। और अधिक कष्टप्रद है अगर यह लंबा है। मैं अपने कोड में UNESCOConnector रखना पसंद नहीं करूंगा। वैसे भी यह पसंद की बात है।
इगोर रोड्रिगेज

22
एक और अच्छा उदाहरण HTTPSID है - क्या मेरा मतलब HTTP SID या HTTPS ID है ... इसलिए इसका अर्थ समझाने के लिए इसे क्रमशः HttpSid या HttpsId लिखा जाना चाहिए।
Oz Edri

37

मुझे निम्न फैशन में वर्गों के व्यक्तिगत उदाहरणों को परिभाषित करना पसंद है:

Catalogue catalogue;
Person person;

इसलिए, यदि मैंने उपयोग किया है, तो मैं DVDPlayerउसका एक उदाहरण क्या कहूंगा? dVDPlayer? इसलिए मैं DvdPlayerकक्षा का नाम चुनूंगा, ताकि आप जैसे उदाहरणों को नाम दे सकें dvdPlayer


16
इसमें गलत क्या है DVDPlayer dvdPlayer;?
azz

9
@DerFlatulator इसमें क्या गलत है? कोई फर्क नहीं पड़ता कि आप कैसे आए dvdPlayer, जब आप वापस जाते हैं, तो आपको मिलेगा DvdPlayer
मातरिनस

5
@DerFlatulator: यह ऑटोमेशन का सवाल है जब अपरकंपेलकेस से लोअरकैमेलकैसे में परिवर्तित होता है: मुझे समस्या थी जब हाइबरनेट मैपिंग को स्नेककेस में स्वचालित करना: DvdPlayer -> dvd_playerलेकिन DVDPlayer -> d_v_d_player। वहाँ DVDPlayer को dvd_player को स्वचालित करने का कोई तरीका नहीं है।
pdem

3
@DerFlatulator: ठीक है, उत्तर के लिए धन्यवाद, इस मामले में काम किया। लेकिन मैं अभी भी "DvdPlayer" संकेतन से आश्वस्त हूं: DVDRPGPlayer के बारे में क्या?, इसे DVDRpgPlayer में परिवर्तित किया जाना चाहिए, न कि DVDrpgPlayer से।
pdem

2
अपने गेटर्स और सेटर्स पर भी विचार करें: उदाहरण के लिए, जेएसपी ईएल (जैसे, ) के साथ उपयोग किए जाने पर getDvdPlayer()बेहतर काम करता है । और यदि आप अपने गेटर्स को समरूपता में लोअरकेस के साथ नाम दे रहे हैं, तो यह आपके वर्ग के नाम को स्थिरता और पूर्वानुमान के लिए समान रखने के लिए सबसे अच्छा है। getDVDPlayer()foo.dvdPlayer
15

33

जावाएसई कक्षाओं, अपाचे कॉमन्स और वसंत से कुछ उदाहरण:

  • HttpURLConnection
  • HTTPAddress
  • UrlPathHelper
  • AopProxy
  • ISBNValidator

तो - यह वास्तव में कोई फर्क नहीं पड़ता।


3
माना। बस अपने कोड आधार में सुसंगत रहें।
JARC

2
मैं यह नहीं कहूंगा कि यह कोई फर्क नहीं पड़ता, हालांकि यह एक बड़ी बात नहीं है। कुछ उपयोग आम तौर पर पसंदीदा मानकों को बहुत उपयोगी लगते हैं, भले ही बाकी सभी उनके अनुसरण के अनुरूप न हों।
जॉन कूम्ब्स ने

मैं पसंद किए जाने वाले SRSसे अधिक SoftwareRequirementSpecification?
शांताराम तुपे


10

जैसा कि दूसरों ने संकेत दिया है, इसकी शैली एक ऐसी चीज है जो परियोजनाओं में भिन्न है। Google प्रोजेक्ट जैसे कि अमरूद और GWT DvdPlayerशैली पसंद करते हैं।

https://google.github.io/styleguide/javaguide.html#s5.3-camel-case


DvdPlayerशैली के लिए एक और सामान्य Google कन्वेंशन लिंक : google-styleguide.googlecode.com/svn/trunk/…
Stan Kurdziel

1
उत्तर में लिंक gwtproject.org/makinggwtbetter.html#codestyle पर पहुंच गया है । लिंक @StanKurdziel उल्लेख google.github.io/styleguide/jodaguide.html#s5.3-camel-case
Jeroen Wiert Pluimers

8

से सूरज जावा डॉक्स :

वर्ग के नाम संज्ञाएं होनी चाहिए, मिश्रित मामले में प्रत्येक आंतरिक शब्द के पहले अक्षर के साथ पूंजीकृत। अपने वर्ग के नाम को सरल और वर्णनात्मक रखने का प्रयास करें। संपूर्ण शब्दों से बचें, समरूपता और संक्षिप्तताओं से बचें (जब तक कि संक्षिप्त रूप लंबे रूप से अधिक व्यापक रूप से उपयोग नहीं किया जाता है, जैसे URL या HTML)।


14
यह वास्तव में कुछ भी नहीं कहता है कि यह ऊपरी या ऊंट मामला होना चाहिए।
डीडी।

@DD। मुझे लगता है कि, "बहुत अधिक व्यापक रूप से उपयोग किए जाने वाले" अंक कुछ प्रासंगिक व्यवसाय-विशिष्ट शब्दों जैसे डीवीडी, एमआरआई,
एमएजीए

3

DVDPlayerमानक है, लेकिन DvdPlayerअसामान्य नहीं है।

आप अधिक से अधिक बार नहीं देखते हैं getId। शायद यह सोच आईडी के कारण "पहचान" का छोटा होना है। यह वास्तव में आइडेंटिटी डॉक्यूमेंट का शुरुआती हिस्सा है।

HttpURLConnectionअक्सर मिश्रित सम्मेलन के उदाहरण के रूप में दिया जाता है। हालांकि, URL में प्रोटोकॉल नाम के रूप में उपयोग किया जाने वाला "http" कम मामला होना चाहिए (हालांकि ऊपरी मामला अक्सर स्वीकार किया जाता है)।


2
मुझे नहीं लगता कि यह वास्तव में एक मानक है, लेकिन यह शायद सबसे आम है।
b.roth

यह सन जावा कोडिंग स्टैंडर्ड, IIRC में है। हालांकि जेएलएस में नहीं।
टॉम हॉकिन -

7
HyperTextTransferProtocolUniformResourceLocatorConnection
flybywire

2
मुझे पूरा यकीन है कि अधिकांश लोग पहचानकर्ता के संक्षिप्त नाम के रूप में आईडी का उपयोग करते हैं ... यानी डेटाबेस में टेबल आईडी पहचानकर्ता को पहचान के दस्तावेज की बात कर रहा है।
डीडी।

9
DVDPlayer निश्चित रूप से मानक नहीं है; यहां तक ​​कि JDK भी उनके दृष्टिकोण में बेतहाशा असंगत है।
केविन बोर्रिलियन

0

कोई "सही" नहीं है, यहां केवल प्राथमिकताएं हैं।

सूर्य उसी तरह से संगत है जिस तरह से वे "URL" और "HTML" वाली कक्षाओं का नाम देते हैं, लेकिन मैं HTTP को सभी कैप्स और ऊंट के मामले में javadocs का उपयोग करते हुए देखता हूं।

व्यक्तिगत रूप से, मैं DvdPlayer पसंद करूंगा।


मेरा मानना ​​है कि URL में HTTP प्रोटोकॉल नाम को निचले मामले में लिखा जाना चाहिए (हालाँकि यह ब्राउज़रों द्वारा ऊपरी मामले में स्वीकार किया जा सकता है)।
टॉम हॉकिन -
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.