C # के पास्कल-केसिंग विधि नामों के पीछे दर्शन / तर्क क्या है?


22

मैं अभी C # सीखना शुरू कर रहा हूँ। जावा, C ++ और ऑब्जेक्टिव-C में बैकग्राउंड से आने पर, मुझे C # का पास्कल-केसिंग का अपना तरीका-नाम अनोखा लगता है, और पहली बार में इस्तेमाल करने में मुश्किल हो जाती है। इसके पीछे तर्क और दर्शन क्या है?

मुझे लगता है कि यह C # गुणों के कारण है। ऑब्जेक्टिव-सी के विपरीत, जहां विधि के नाम उदाहरण के चर के बिल्कुल समान हो सकते हैं, C # के साथ ऐसा नहीं है। मैं गुणों के साथ लक्ष्यों में से एक का अनुमान लगाऊंगा (क्योंकि यह अधिकांश भाषाओं के साथ है जो इसका समर्थन करते हैं) गुणों को चर और विधियों से वास्तव में अविभाज्य बनाना है। इसलिए, C # में एक "int x" हो सकता है, और संबंधित संपत्ति X बन जाती है। यह सुनिश्चित करने के लिए कि गुण और विधियाँ अविभाज्य हैं, सभी विधि के नाम जो मैं अनुमान लगा रहा हूं, इसलिए भी एक बड़े अक्षर से शुरू होने की उम्मीद है। (यह सिर्फ मेरी परिकल्पना पर आधारित है जो मुझे C # के बारे में पता है - मैं अभी भी सीख रहा हूं)। मैं यह जानने के लिए बहुत उत्सुक हूं कि यह जिज्ञासु दिशानिर्देश कैसे बन गया (यह देखते हुए कि यह)

(EDIT: पास्कल-केसिंग द्वारा, मेरा मतलब है पास्कलकेस (जो मूल रूप से कैमकेलेज है, लेकिन बड़े अक्षर से शुरू होता है)। विधि के नाम आमतौर पर अधिकांश भाषाओं में निचले अक्षर से शुरू होते हैं।


यदि आपने देखा कि एक निश्चित परिवार के सभी सदस्यों ने अपने घर की सभी दीवारों को एक अजीब प्रतीक चिन्ह के साथ चित्रित किया था, तो क्या आप उत्सुक होंगे कि उन्होंने ऐसा क्यों किया?
रात्रि

1
आपको क्यों लगता है कि इसे पास्कल केस कहा जाता है?
आर। मार्टिनो फर्नांडीस

1
@ मर्तिनो फर्नांडीस इस शैली का मानक नाम है, Google पर देखें
एंड्री

1
@ नोक्टर्न - हाँ। मैं उत्सुक
होऊंगा

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

जवाबों:


27

यह स्वाद की बात है। किसी ने एक बार नामों के लिए पास्कल शैली का उपयोग करने का फैसला किया और यह एक मानक बन गया।

मेरे पास एक जंगली अनुमान है कि यह एंडर्स हेजलबर्ग था, जो पास्कल के उत्तराधिकारी डेल्फी के वास्तुकार थे। केस स्टाइल वही है जो C # में है।


यह मेरा जवाब होने जा रहा था। : पी
देवसोलो

@DevSolo क्षमा करें, जब स्टैकओवरफ़्लो में प्रश्न आया तो मैंने टाइपिंग का जवाब देना शुरू कर दिया :)
एंड्री

मुझे लगता है कि जड़ें प्राचीन इतिहास में और भी गहराई तक जाती हैं - नीचे मेरा जवाब देखें :)
davka

20

यदि आप कारणों के बारे में पूछ रहे हैं, तो यहां घोड़े के मुंह से सीधे एक है:

MSDN ब्लॉग्स में ब्रैड अब्राम्स द्वारा पास्कल केसिंग और कैमल कैसिंग लेख के आसपास का इतिहास

फ्रेमवर्क के शुरुआती डिजाइन में नामकरण शैली के बारे में हमारी सैकड़ों घंटे की बहस थी। इन बहसों को सुविधाजनक बनाने के लिए हमने कई शब्द गढ़े। एंडर्स हील्सबर्ग ( टर्बो पास्कल के मूल डिजाइनर ) के साथ डिजाइन टीम के एक प्रमुख सदस्य हैं, यह कोई आश्चर्य नहीं है कि हमने पास्कल प्रोग्रामिंग भाषा द्वारा लोकप्रिय आवरण शैली के लिए पास्कल केसिंग शब्द चुना है ...

पास्कल आवरण सम्मेलन प्रत्येक शब्द (लंबाई में दो से अधिक पत्र के संक्षिप्त रूप सहित) का पहला वर्ण फ़ायदा उठाने की ...

और यहाँ डिज़ाइन दिशानिर्देश हैं: क्लास लाइब्रेरी डेवलपर्स के लिए डिज़ाइन दिशानिर्देश

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


2
TurboPascalPhilip Kahn(उर्फ Borland) का बच्चा है जो माइक्रोसॉफ्ट के लिए भूलने के लिए बहुत सुविधाजनक है। राजनीति ....
davka

1
पहले लिंक पर टिप्पणियाँ महान, योग्य हैं।
jmq

7

दार्शनिकता के बारे में नहीं जानते, लेकिन कम से कम Win32 API दिनों के बाद से Microsoft प्लेटफ़ॉर्म पर पास्कल केसिंग आम है।


8
और मैं अभी भी इसे नफरत करता हूं, योग्य।
jmq

2

मुझे नहीं लगता कि इसके पीछे कोई विशिष्ट दर्शन था। दिशानिर्देशों की आवश्यकता थी, और कई बिंदु थे जो इसे प्रभावित कर सकते थे:

  • वे किसी भी उपसर्ग संकेतन से छुटकारा पाना चाहते थे (यहाँ युग पढ़ें)
  • वे चाहते थे कि स्थानीय / निजी सदस्य और सार्वजनिक सदस्य केवल उनके नाम को पढ़कर प्रतिष्ठित हों।
  • वे नहीं चाहते थे कि सी # कोड जावा कोड की तरह दिखे (जो ऊंट मामले का भारी उपयोग करता है)

ध्यान दें कि यह नामकरण दिशानिर्देश .NET .NET के लिए है और विशेष रूप से C # के लिए नहीं है। VB.NET में, केस-असंवेदनशील भाषा, कन्वेंशन समान रहता है, लेकिन आप इसका उपयोग निजी और सार्वजनिक सदस्यों के बीच के मामले में अंतर नहीं कर सकते।
आर। मार्टिनो फर्नांडिस

@ मर्तिनो: सहमत। लेकिन मुझे अभी भी लगता है कि इसका एक कारण था।
१२:१२ तक का चक्रवात

7
+1: "वे नहीं चाहते थे कि सी # कोड जावा कोड की तरह दिखे (जो ऊंट मामले का भारी उपयोग करता है)": मुझे दृढ़ता से संदेह है कि आप यहीं हैं!
जियोर्जियो

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

0

मुझे नहीं पता कि यह अच्छा और कॉम्पैक्ट होने के अलावा आवरण के पीछे एक "दर्शन" है और बिना अंडरस्कोर का उपयोग किए आसानी से कई शब्दों के रूप में दिखाई दे सकता है।

पिछले कुछ दशकों में आवरण के कई रूप हैं। वे प्रत्येक शब्द को अलग करने वाले अंडरस्कोर के साथ क्रिया करने के लिए बहुत ही छंद (सी और मानक सी लाइब्रेरी देखें) से लेकर हैं। जबकि नामकरण का .NET लाइब्रेरी कन्वेंशन अभी भी बहुत क्रियात्मक है, मुझे लगता है कि यह आवरण के रूप में कुछ मध्य जमीन पर हमला करता है।


5
-न-भूल-तुतलाना शैली का नाम बदलने!
आर। मार्टिनो फर्नांडीस

@Martinho फर्नांडीस वास्तव में सी जैसी भाषाओं के संदर्भ में यह मान्य नहीं है।
एंड्री

हाँ, लिस्प खाते में व्हाट्सएप लेता है। (- var1 var2)
माइकल के

@Martinho फर्नांडीस: बेशक, टोकन को अलग करने के लिए व्हाट्सएप के उपयोग की आवश्यकता होती है। यह COBOL-STYLE-NAMING भी है, जो इसे उन भाषाओं के लिए आम बनाता है जिनकी मैं सबसे अधिक प्रशंसा करता हूं और सबसे कम प्रशंसा करता हूं।
डेविड थॉर्नले

0

एक जंगली (लेकिन अनुचित नहीं, आईएमएचओ) का अनुमान लगाते हुए - सी # डिजाइन का निरीक्षण पास्कल के मूल आविष्कारक निकोलस विर्थ ने किया था । देखें कनेक्शन ... :)

जिज्ञासु # 1: मैं .NET और C # (हाँ, मैं प्रागैतिहासिक ...) की घोषणा को सकारात्मक रूप से याद करता हूं और कैसे Microsoft ने C # पर Wirth का नाम लिया है। फिर भी, न तो (C # और Wirth) विकिपीडिया पृष्ठों में इसका उल्लेख है।

जिज्ञासु # 2: हालांकि इसे कहा जाता है PascalCase, यह TurboPascalसंकलक (जो अंततः बन गया Borland) द्वारा लोकप्रिय हुआ , न कि स्वयं भाषा।


4
और TurboPascal आसानी से एंडर्स
हेजेलबर्ग

3
एंडर्स हेजलबर्ग आईआईआरसी डेल्फी के प्रमुख डिजाइनर थे, और टर्बो पास्कल पर बहुत काम किया था, लेकिन टर्बो पास्कल मूल रूप से उनका बच्चा नहीं था (यह फिलिप कहन्स था)। निकलॉस विर्थ ने मूल पास्कल का आविष्कार किया और इसे मानकीकरण के माध्यम से लिया, फिर मानक को बड़े पैमाने पर नजरअंदाज कर दिया। इसके अलावा, Wirth को C # के पूरे जीवन के बारे में बताया गया है, और इससे पहले कई उत्तराधिकारी-टू-पास्कल भाषाओं (हाल ही में ओबेरॉन 2) को डिज़ाइन किया गया था, इसलिए मुझे संदेह है कि उनकी कोई प्रत्यक्ष भागीदारी थी। Microsoft बोर्ड पर हेजलबर्ग होने के बारे में जोर से चिल्लाया। टर्बो पास्कल शुरू से ही एक बोरलैंड उत्पाद था।
स्टीव ३१

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