जावा प्रोग्रामर एक चर "क्लैज़" का नाम क्यों देना चाहते हैं? [बन्द है]


156

मैंने बहुत सारे कोड देखे हैं जैसे घोषणा की है Class clazz, यह कहाँ से उत्पन्न होता है? क्या यह किसी प्रकार का सम्मेलन है? मुझे लगता है कि 'क्लैज़' भी एक अंग्रेजी शब्द नहीं है, इसका कोई मतलब नहीं है, इतने सारे प्रोग्रामर एक गलत नाम संयोगवश कैसे ले सकते हैं?


36
भूल नहीं है!
पीटर रेकोर

24
@ पेटर: अच्छी बात है, यह एक क्लैसिक है।
राष्ट्रपति जेम्स के। पोल्क

13
अलेक्सी शिपिलेव ने एक विकल्प के रूप में сlassसिरिलिक के साथ वर्तनी का उपयोग करने का प्रस्ताव दिया है с
स्टुअर्ट मार्क्स

12
@StuartMarks मैं उस प्रस्ताव को अस्वीकार कर रहा हूं। आपका स्वागत है।
गोरान वासिक

16
इंग्लैंड में, हम आम तौर पर 'स्पष्ट' का उपयोग करते हैं।
जॉन गोवर्स

जवाबों:


173

clazzJDK 1.0 के बाद से आरक्षित शब्द "वर्ग" के स्थान पर जावा में उपयोग किया गया है। "वर्ग" वह है जो आप चाहते हैं, लेकिन कबाड़ को संक्षिप्त या सम्मिलित करना ("a", "the", "_", आदि) स्पष्टता कम कर देता है। clazzसिर्फ कक्षा कहता है। "इंटरनेशनल" अंग्रेजी बोलने वालों (ब्रिटिश और अमेरिकी दोनों अंग्रेजी पढ़ने वाले) का इस्तेमाल 'एस' और 'जेड' को ट्रांसप्लांट करने के लिए किया जाता है।

चूंकि जावा ने शुरू से ही स्रोत और एक उपयुक्त संस्कृति का खुलासा किया है, इसलिए सार्थक जावा कोड और ट्यूटोरियल समान सम्मेलनों को उठाते हैं। यह जावा पारिस्थितिकी तंत्र के बारे में महान चीजों में से एक है, जो मुझे लगता है कि इसकी सफलता का एक महत्वपूर्ण हिस्सा रहा है।


82
यह सहमत होना कठिन है कि "क्लैज़" "_क्लास" या "मायक्लास" की तुलना में अधिक स्पष्ट है। अगर मैंने कोड में "_class" देखा होता, तो इरादे एक गैर-शब्द की तुलना में अधिक स्पष्ट होते जो मुझे Google (और इस पृष्ठ पर) भेजते।
uscjeremy

@uscjeremy: व्यक्तिगत रूप से, मैं अंडरस्कोर का उपयोग उन पहचानकर्ताओं को करना पसंद करता हूं जो केवल मामले में भिन्न होते हैं। क्या मैं कोई भाषा डिजाइन कर रहा था, मेरे पास यह केस-संवेदी और गैर-केस-संवेदी नियमों का एक संकर होगा: किसी भी पहचानकर्ता का उपयोग केवल मूल आवरण में किया जा सकता है , लेकिन किसी भी पहचानकर्ता की घोषणा किसी भी पूर्व-विद्यमान पहचानकर्ता को छिपाएगी केवल आवरण में भिन्न। Fooवर्ग दायरे और fooस्थानीय-चर दायरे में परिभाषित होने के बाद कानूनी होना चाहिए, लेकिन स्थानीय दायरे के भीतर वर्ग-गुंजाइश चर के सभी संदर्भों की आवश्यकता होनी चाहिए this.Foo। ऐसा नियम ...
सुपरकैट

@uscjeremy: ... मेरी राय में केस-सेंसिटिव और नॉन-केस सेंसिटिव लैंग्वेज के फायदों को मिलाएं। केस-असंवेदनशील भाषाओं में यह लाभ होता है कि किसी पहचानकर्ता के नाम "फू" की ध्वन्यात्मक रीडिंग "अपरकेस फू" या "लोअरकेस फू" कहने के बिना असंदिग्ध होगी, लेकिन पहचानकर्ता को someThingकुछ स्थानों पर वर्तनी की अनुमति देने का कोई वास्तविक कारण नहीं है। sOmEtHiNgदूसरों में।
सुपरकैट

1
@supercat यूनीकोड ​​जनरल श्रेणी का विराम चिह्न वह है जिसके लिए मैं मछली पकड़ रहा था। unicode.org/faq/punctuation_symbols.html / मैं C # डिज़ाइन नहीं करेगा। जावा में, आप एक विधि fnordऔर fnordकिसी भी मुद्दे, पूंजीकरण या बकवास शब्दों के बिना बुलाया क्षेत्र के साथ दूर हो जाते हैं । मुझे लगता है कि यह एक काउंटर उदाहरण के रूप में पर्याप्त होगा।
टॉम हॉल्टिन -

3
@uscjeremy यह मानना ​​मुश्किल है कि "क्लैज़" "_क्लास" या "मायक्लास" से अधिक स्पष्ट है - सच है। हालांकि, "_class" का उपयोग करना एक विकल्प नहीं होगा, क्योंकि यह जावा नामकरण सम्मेलनों के साथ स्पष्ट रूप से संघर्ष करता है ।
एम सी सम्राट

73

क्योंकि वे उस शब्द का उपयोग नहीं कर सकते जो वे उपयोग करना चाहते हैं class। यह आरक्षित है।


2
हाँ, मुझे पता है, लेकिन मुझे लगता है कि एक चर सही वर्तनी अधिक सार्थक होगा।
Sawyer

22
@ टिप्पणी - आप कैसे कह सकते हैं "आप जानते हैं" और मांग करते हैं कि चर नाम को उसी टिप्पणी में सही लिखा जाए? वे परस्पर अनन्य हैं।
डफ्युमो

3
@, आप बस एक चर "वर्ग" नाम नहीं दे सकते, यह एक आरक्षित शब्द है।
स्टीव कू ने

6
@duffymo: यह मज़ेदार है। मुझे पता है कि क्लास आरक्षित शब्द है, और मैं वास्तव में मांग करता हूं कि वेरिएबल नाम को सही तरीके से लिखा जाए, वे परस्पर अनन्य क्यों हैं? क्या आपको इसे 'क्लास' कहना है?
सवाईर

13
मुझे लगता है कि टोनी चाहता है कि चर को "क्लास" की तुलना में कुछ अधिक वर्णनात्मक नाम दिया जाए। उदाहरण के लिए, "x" को ठीक से वर्तनी कहा जा सकता है, लेकिन इसका मतलब "
नंबरऑफकम

17

यह केवल इसलिए है क्योंकि 'क्लास' एक आरक्षित कीवर्ड है, इसलिए Class classइसकी अनुमति नहीं है। इसलिए आप देखेंगे Class clazzया Class cls


7
मैं किसी वर्ग का नाम रखने के कारण के बारे में नहीं सोच सकता Classक्योंकि किसी भी परियोजना में बहुत सारे वर्ग हैं जो एक वर्ग को बुलाते हैं वर्ग एक तरह का व्यर्थ लगता है। मैं VARIABLE को कॉल करने का एक कारण भी नहीं सोच सकता class...
Blindy

8
आपने क्लास क्लास का नाम नहीं दिया, यह जावा एपीआई है।
सवाईर

3
@ ब्लाइंडी: java.lang.Class के बारे में क्या? आपके पास वहां ज्यादा विकल्प नहीं हैं।
दान डायर

14
@ बेलिंडी: पहले से ही एक वर्ग है जिसे क्लास कहा जाता है, जो एक वस्तु के वर्ग को अच्छी तरह से संदर्भित करता है। 'वर्ग' नामक एक चर होने का सही कारण यह है कि जब आप किसी वस्तु के वर्ग के साथ काम कर रहे हों (यानी: यह पता लगाना कि कोई वस्तु किस प्रकार की है)
रेवरेंड गोंजो

3
मैं सूचनात्मक ClassInformation, ClassMetadataया कुछ इसी तरह का विचार करूंगा । हर वर्ग एक वर्ग है, लेकिन आप उन सभी का नाम नहीं लेते हैं Class, आप उनका नाम उनके मुख्य कार्य से लेते हैं।
Blindy

7

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

यदि आप मजबूर महसूस करते हैं, तो आप एक संदर्भ नियम को शामिल करने के लिए अपने स्वयं के जावा कंपाइलर लिख सकते हैं जो आपको classएक चर नाम के रूप में उपयोग करने की अनुमति देगा । हालांकि मुझे लगता है कि यह आपके समय का सिर्फ उपयोग करने के लिए बेहतर होगा clazzया klass- यह शायद आपके स्वास्थ्य के लिए भी अच्छा होगा।


3
असमर्थता के बारे में एक शब्द : जावा को आरक्षित-शब्द भाषा के रूप में डिजाइन किया गया था । गैर-आरक्षित-शब्द भाषाएँ सफलतापूर्वक बयानों को संकलित और वाक्य-हाइलाइट कर सकती हैं जैसे कि यदि तब (और) पठनीयता के बावजूद, फिर से । तो संकलक जानबूझकर छोड़ दिया गया था असमर्थ
usr स्थानीय-ΕΨΗΕΛΩΝ

4

यह कहाँ से उत्पन्न होता है?

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


4

जावा में एक सुविधा नहीं है जो आपको किसी कीवर्ड को एक पहचानकर्ता के रूप में उपयोग करने की अनुमति देता है, इसके @उपसर्ग के साथ C # के विपरीत (जैसे @classएक वैध पर्यवेक्षक है।)


2
वह एक अलग पहचानकर्ता है। classऔर $classJVM में दोनों मान्य (लेकिन अलग) पहचानकर्ता हैं। कोई पहचानकर्ता नहीं है जिसे आप जावा स्रोत फ़ाइल में लिख सकते हैं "class"जो वीएम में अनुवाद करता है।
फाइननव

2

यह कीवर्ड क्लास की-वर्ड द्वारा प्रतिस्थापित (समान) एक अंग्रेजी शब्द है, जिससे लोगों को समझा जा सके कि यह एक क्लास है। और यह संहिता की पठनीयता को बढ़ाने के लिए लगभग है

इसमें कुछ भी बड़ा तर्क शामिल नहीं है


2

घोषणा Class clazzजावा दुनिया में लोकप्रिय है, लेकिन यह नवागंतुकों और जादूगरों के लिए अजीब हो सकता है। मैंने कुछ लोगों को यह कहते हुए सुना है कि कम से कम विस्मय के सिद्धांत के अनुसार इससे बचना चाहिए ।

जैसा कि यह कहना संभव है कि एक Classवस्तु एक प्रकार का प्रतिनिधित्व करती है , मैं व्यक्तिगत रूप से इस तरह के चर घोषित करना पसंद करता हूं Class type


0

हम क्लैज़ का उपयोग करते हैं क्योंकि क्लास एक प्रकार का हेडर है। उदाहरण के लिए, आप यहां कक्षा का उपयोग करते हैं:

public class HelloWorld {

और यहाँ:

Object.class.getName();

इसलिए दुर्भाग्य से, हमें वैकल्पिक नामों जैसे क्लैज़ का उपयोग करना होगा।


-2

सीधे शब्दों में कहें, classवर्ग है कि clazzनहीं करता है।

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