2009-11-16 11 views
17

अपने व्याख्या के आधार पर इस या एक शब्दाडंबरपूर्ण सवाल नहीं हो सकता है, लेकिन यह वास्तव में मुझे चकरा। इस सम्मेलन में क्या अर्थ है? मैं समझता हूं कि नामकरण सम्मेलनों में उनके पीछे एक कविता या कारण नहीं होना चाहिए, लेकिन पहले से ही लोकप्रिय camelCase से क्यों विचलित हो? वहाँ एक कविता और lower_case_with_underscores के पीछे कारण यह है कि मैं किसी भी तरह याद कर रहा हूँ है? (और हाँ, मैंने पूरी तरह से पीईपी 8 पढ़ा है, और हाँ, मुझे समझ में आता है कि यह केवल एक प्रस्ताव है, एक गाइड, आदि)किस कारण से हमारे पास low_case_with_underscores नामकरण सम्मेलन है?

मुझे लगता है कि मेरा असली सवाल यह होगा: मैं एक पायथन लिख रहा हूं पुस्तकालय। असल में, किसी भी किस्मत के साथ, यह मेरी अन्य परियोजनाओं के सापेक्ष एक बड़ी पुस्तकालय हो सकती है। मैं पहले से ही पीईपी 8 का पालन करने की कोशिश करता हूं, और अब तक मैंने lower_case_with_underscores को पीईपी 8 के रूप में कार्य और विधि नामों के लिए भी बनाए रखा है। लेकिन यह मुझे खराब करता है कि मुझे logging के लिए ट्विस्ट, ऊंटकेस के लिए ऊंटकेस का उपयोग करना याद रखना है, और बस बाकी सब कुछ के बारे में। मुझे किस नामकरण सम्मेलन का उपयोग करना चाहिए, और क्यों?

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

+5

"लेकिन पहले से ही लोकप्रिय ऊंटकेस से विचलित क्यों हो?" मेरा मानना ​​है कि low_case_with_underscores camelCase से बहुत पुराना है। इसके अलावा, मैं व्यक्तिगत रूप से एक जलती हुई जुनून के साथ मिश्रित कैस के ऊंट के कैमरे को नफरत करता हूं। आप जो भी सम्मेलन पसंद करते हैं उसका प्रयोग करें। –

+1

सिस्टम हंगरी का प्रयोग करें। : पी लेकिन गंभीरता से, यह लोगों को आश्चर्यचकित नहीं करेगा - कोडिंग शैली सम्मेलन प्रोग्रामिंग के किसी भी अन्य पहलू के रूप में एक धार्मिक युद्ध है। आपको घुंघराले ब्रेसिज़, या व्हाइटस्पेस के ज़ेन कहां रखा जाए, इस पर समर्पित बहुत सारे प्रश्न मिलेंगे। – Xiaofu

+1

हंगेरी को डकटाइपिंग के साथ कैसे काम करना चाहिए? : पी –

उत्तर

47

camelCase और/या CamelCase (और है कि अपने आप ;-) घने वातावरण आप के साथ सबसे परिचित हैं की तरह के लिए सबसे लोकप्रिय हो सकता है में एक बहस है, लेकिन वह शायद ही उन्हें सार्वभौमिक बनाता है - या आपके पास सी ++ बुलाया अस्पष्ट भाषा कभी नहीं सुना है अपने std::find_first_of और std::replace_copy_if एल्गोरिदम के साथ और इतने पर ?!

तो पीईपी 8 में, जैसा कि आप कहते हैं, कोई "विचलन" नहीं है - सी ++ की ओर एक विकल्प - जावा या सी # में अधिक लोकप्रिय लोगों के खिलाफ मानक सम्मेलन।

आपको अपने कोड के लिए क्या करना चाहिए, बस एक सम्मेलन चुनें और इसके साथ चिपके रहें - अन्य विचारों की तुलना में स्थिरता अधिक महत्वपूर्ण है। मेरे नियोक्ता सभी आंतरिक स्रोतों के लिए सभी भाषाओं में CamelCase सम्मेलन का उपयोग करता है (हालांकि सार्वजनिक एपीआई को उजागर करने की आवश्यकता नहीं होती है, जो कि एक अलग मुद्दा है), मैं व्यक्तिगत रूप से इसे घृणा करता हूं (मेरी इच्छा है कि मैं को हर पर संवेदनशीलता पर निर्भर करता हूं प्रोग्रामिंग ब्रह्मांड! -), लेकिन मैं इसके साथ चिपक जाता हूं, और वास्तव में इसे लागू करने में मदद करता हूं (कोड समीक्षा में), क्योंकि समानता महत्वपूर्ण है।

मुझे लगता है कि आप समझेंगे कि केस संवेदनशीलता पर भरोसा क्यों करना एक भयानक विचार है, और अगर आपको स्क्रीन पढ़ने के लिए स्क्रीन रीडर पर भरोसा करना है - अधिकांश स्क्रीन पाठक मामले के मुद्दों को इंगित करने पर एक भयानक काम करते हैं , और कोई अच्छा तरीका नहीं है, केस अंतरों को आसान श्रवण सुराग में परिवर्तित करने के लिए कोई मजबूत या आसान सम्मेलन नहीं है (एक अच्छा कॉन्फ़िगर करने योग्य स्क्रीन रीडर में अंडरस्कोर का अनुवाद "क्लिक" करने के दौरान, इसे हवा बनाता है)। बिना किसी दृश्य विकार के लोगों के लिए, जो कि 9 0% या उससे अधिक संदेह नहीं है, आपको देखभाल करने की आवश्यकता नहीं है (जब तक कि आप शामिल नहीं होना चाहते हैं और सही दृष्टि के अपने उपहार को साझा न करें ... naah , जो उन लोगों की परवाह करता है, है ना ?!)।

लेकिन, स्थिरता अभी भी महत्वपूर्ण है, और _every_body की मदद करता है।

+12

वाह! मैंने नामकरण सम्मेलनों को पहले एक सुलभता मुद्दे के रूप में कभी नहीं माना। इस पर मेरी आंखें खोलने के लिए बस +1 करें। – gotgenes

+3

@gotgenes, tx - और एक ही समय में, किसी और ने गुमनाम रूप से इसे +1 किया ... मुझे लगता है कि कुछ लोग सिर्फ ** की तरह ** याद नहीं करते हैं कि सभी को सही दृष्टि नहीं है, इसलिए, उल्लेख करना उस छोटे से विवरण से नीचे-वोट भी आकर्षित होंगे (कवर के तहत और गुमनाम होने की सुरक्षा, निश्चित रूप से, अज्ञात डरपोकों द्वारा खुश होने के लिए ;-)। लेकिन, यहां तक ​​कि ** आपके जैसे ** एक ** अच्छे व्यक्ति को भी बनाना (जो _cares_ और केवल इस मुद्दे से अवगत नहीं था) अब जागरूक है और भविष्य में इस पर विचार करने की संभावना है, जो कुछ भी मेरे रास्ते में आती है! –

+1

मैं दूसरा, मैंने पहले कभी भी सुलभता मुद्दे के बारे में सोचा नहीं था। मुझे प्रबुद्ध करने के लिए धन्यवाद (हमें)। – dav

2

नामकरण परंपरा है कि आपकी दुकान का उपयोग करता है का उपयोग करें।

यदि वे मानते हैं कि मौजूदा सम्मेलन डोरकी है (या उनके पास मानक नहीं है), और एक नए और बेहतर (अधिक मानक) सम्मेलन में सभी कोड को साफ करने के लिए थोड़ा काम नहीं करते हैं, तो तुम यह कर सकते हो।

15

मैंने सुना है वह अन्य संदर्भों कि words_with_underscores तुलना में आसान गैर मूल अंग्रेजी पाठकों के लिए अलग करने के लिए कर रहे हैं wordByCamelCase में कहा गया है। दृश्यमान रूप से इसे अलग, विदेशी शब्दों को पार्स करने के लिए कम प्रयास की आवश्यकता है।

+0

आसान दृश्य पृथक्करण * प्रोग्रामिंग भाषा एफिल के लिए स्पष्ट रूप से उल्लेख किया गया कारण है। उनके पास यह underscore_separator_standard भी है। यह शायद मूल अंग्रेजी पाठकों के लिए भी मदद करता है :-) –

+0

किसी भी मामले में पढ़ना आसान है। निरंतर सबूत: TheQuickBrownFoxJumpsOverTheLazyDog बनाम_quick_brown_fox_jumps_over_the_lazy_dog। अंतिम उच्च गति पर पढ़ने के लिए आखिरी संभव है, जबकि मस्तिष्क पहले विकल्प को डीकोड करने की कोशिश करते समय सुपर धीमी सांद्रता मोड में जाता है। – hlovdal

+3

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

5

अंडरस्कोर सम्मेलन के साथ लोअर केस यूनिक्स apis के लिए वापस सभी तरह चला जाता है। इस सम्मेलन में उनके पूरे सिस्कोल हैं।

+3

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

2

जो कुछ भी आप करते हैं, मुझे लगता है कि यह महत्वपूर्ण है कि आप लगातार हैं। मैंने कुछ स्टाइल गाइड देखे हैं (उदाहरण के लिए Google Python Style Guide), जो आपको अंडरस्कोर का उपयोग करने के लिए कहता है।

मैं व्यक्तिगत रूप से सोचता हूं, अंडरस्कोर के साथ लोअरकेस अक्षरों का उपयोग करके कोड को पढ़ने में आसान बनाता है।

आप camelCasing का उपयोग करते हैं? मुझे कोई फर्क नहीं पड़ता! हमेशा Glasses Mode है। :)

0

जो कुछ भी आपको सबसे अच्छा लगा, उसे करने के लिए स्वतंत्र महसूस करें, लेकिन लोकप्रिय सम्मेलनों में से किसी एक का उपयोग करने पर विचार करें। यह अन्य डेवलपर्स के लिए आपके कोड के साथ तेजी से उठना आसान बनाता है।

याद रखें कि परियोजना के जीवन में, इसे लिखने के लिए कोड पढ़ने में अधिक समय व्यतीत होता है।

6

एक कारण ऐतिहासिक रूप से हो सकता है, कई कंप्यूटरों में मिश्रित केस क्षमता नहीं थी। के दिनों में COBOL, कार्यक्रम सभी ऊपरी मामले थे। शुरुआती 80 के दशक में कई 'व्यक्तिगत कंप्यूटर' केवल ऊपरी केस फोंट के साथ आए थे। उदाहरण के लिए, आप ऐप्पल II + के लिए एक कम केस विस्तारक कार्ड प्राप्त कर सकते हैं। जब कार्यक्रम मिश्रित मामले की अनुमति देना शुरू कर दिया, ऊंट का मामला लोकप्रिय नहीं था। कई कार्यक्रमों ने जो सभी कैप्स में उपयोग किया था, और बस कम मामले में परिवर्तित हो गया। 80 की विभिन्न भाषाओं के माध्यम से मामले के लिए जिम्मेदार ठहराया गया, और 90 के जावा में ऊंटकेस वाक्यविन्यास को लोकप्रिय बनाया गया। जिन भाषाओं में पुराना इतिहास है, या यूनिक्स सिस्टम प्रोग्रामिंग के लिए अधिक बारीकी से बंधे हैं वे मिश्रित मामले के अर्थपूर्ण उपयोग से बचने के लिए हैं।

1

क्या यह मेयर्स था जो लंबे समय से आया था और पढ़ने योग्य मेथोडनाम बनाम an_even_longer_but_perfectly_readable_method_name तुलना?

यदि आप पहले से ही एक के लिए उपयोग कर रहे हैं, तो आपका पसंदीदा सम्मेलन अधिक प्राकृतिक दिखाई देगा। लेकिन नए प्रोग्रामर अंडरस्कोर (नमूना आकार एन = मुझे, वर्ष 2001 में) पसंद कर सकते हैं।

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

उदाहरण के लिए:

poly = geometryLibrary.polygonGenerator.createFromPointSet(myList.listContentsToPointset()) 
+0

यह सुनिश्चित नहीं है कि उदाहरण कोड सांप के मामले के खिलाफ एक तर्क है क्योंकि यह डेमेटर के कानून के साथ अच्छी तरह से उत्साहित नहीं है। – Juliet

+1

एक मान्य उदाहरण! –

11

LowerCaseWithUnderScoresAreSuperiorBecauseTheTextYouNormallyReadInABookOrNewsPaperForExampleIsNotWrittenLikeThis। ।

+11

but_its_not_written_like_this_either_so_I_dont_see_your_point –

+40

@ स्कॉट: आपकी टिप्पणी * पढ़ने के लिए * अधिक * आसान थी। –

+0

@ स्टेव, आपकी टिप्पणी उन सभी में से पढ़ने के लिए सबसे आसान थी – Dennis

2

यह सिर्फ एक सम्मेलन है, लेकिन यदि आप बहुत से संक्षेपों के साथ काम करते हैं तो एक उपयोगी व्यक्ति है।

आपने ईमेलकॉन्फिग कैसे लिखा (या यह ईमेल कॉनफिग था)? HttpRequest? email_config और http_request तब बहुत स्पष्ट सम्मेलन हैं।

संबंधित मुद्दे