2017-07-11 16 views
5

मैंने सी ++ के नियम नामकरण के बारे में दस्तावेज़ पढ़ा है, वे उपयोग करने योग्य नाम प्रतीत होते हैं।क्या यह "हाँ", "नहीं", "i", "out" का उपयोग चर/enum के नाम के रूप में सुरक्षित है?

हालाँकि, व्यवहार में, जब मैं की तरह iter, yes, no, out, i, Error, आदि, विजुअल स्टूडियो अजीब इटैलिक फॉन्ट उनके लिए उपयोग करेगा एक नाम के साथ एक चर/enum बनाने की कोशिश की।

enter image description here

मैं केवल अनुमान लगा सकते हैं कि वे विशेष बात के लिए आरक्षित हैं, और आईडीई (जैसे रिफैक्टरिंग/नाम बदलने की प्रक्रिया) अगर मैं इस तरह के नाम का उपयोग अजीब कार्य हो सकता है।

क्या यह उन अभ्यासों का उपयोग अभ्यास में सुरक्षित है? क्या मैं बहुत घबरा गया हूँ?

क्षमा करें अगर यह बहुत नौसिखिया या अनुचित प्रश्न है।
मुझे इसके बारे में कुछ हफ्तों तक संदेह है लेकिन पूछने से बहुत डर लगता है।

+0

आपके नाम आपके उपयोग के लिए कानूनी हैं। 'iter' और' i' आमतौर पर 'for' लूप के दायरे तक सीमित होने पर उपयोग किया जाता है। ध्यान रखें कि वे विशेष रूप से * अच्छे * नाम नहीं हैं, क्योंकि उनके पास कोई अर्थ नहीं है, और कोड को समझने में आपकी सहायता नहीं करते हैं। – BoBTFish

+0

@BoBTFish धन्यवाद! क्या आपको "हां", "नहीं" के बारे में भी पता है? मुझे उनका उपयोग नहीं करना चाहिए? यदि यह हमेशा इस तरह से होता है, तो मैं मानता हूं कि इटालिक नाम खराब अभ्यास है और मैं इसे एक कंपाइलर चेतावनी की तरह व्यवहार करूंगा। – cppBeginner

+1

@cppBeginner - यह अत्यधिक व्यक्तिपरक है। एक दायरे में, उन नामों में आपके उपयोग को समझने के लिए आवश्यक सभी अर्थ हो सकते हैं। दूसरे में वे दुखी हो सकते हैं अपर्याप्त। कोई उद्देश्य जवाब नहीं है जिसे हम दे सकते हैं। – StoryTeller

उत्तर

4

इन नामों मान्य होते हैं और किसी भी "नुकसान" का कारण नहीं बनेगा, मानक केवल कहते हैं:

  • प्रत्येक नाम है कि एक डबल अंडरस्कोर (_ _) शामिल है या एक अंडरस्कोर एक के बाद से शुरू होता है अपरकेस अक्षर (2.11) किसी भी उपयोग के लिए कार्यान्वयन के लिए आरक्षित है।

  • अंडरस्कोर से शुरू होने वाला प्रत्येक नाम वैश्विक नामस्थान में नाम के रूप में उपयोग के लिए कार्यान्वयन के लिए आरक्षित है।

इसका मतलब है कि अपने सभी नाम उपयोगकर्ता के कोड में उपयोग करने के लिए ठीक हैं। विजुअल स्टूडियो में इन नामों के लिए i और iter आमतौर पर लूपिंग में उपयोग किया जा सकता है।

+0

क्या आपका मतलब है कि वे विजुअल स्टूडियो-विशिष्ट लक्षण हैं? धन्यवाद – cppBeginner

+0

@cppBeginner हां। –

1

ये नाम मानक सी ++ में आरक्षित नहीं हैं, जैसा रिक रिकली द्वारा समझाया गया है। एक कार्यान्वयन भाषा एक्सटेंशन प्रदान करने के लिए अतिरिक्त आरक्षित शब्दों को स्वीकार करने का विकल्प चुन सकता है, जैसे सी ++/सीएलआई में ref class। कुछ मामलों में, जैसे ref class, जहां refप्रासंगिक कीवर्ड है, ये एक्सटेंशन केवल विस्तारित भाषा के दायरे में अन्यथा खराब गठित कार्यक्रम बनाते हैं। अन्य मामलों में, अन्यथा अच्छी तरह से गठित कार्यक्रम इसका अर्थ बदल सकता है या खराब हो सकता है। पूर्व मामले में, कार्यान्वयन अभी भी सी ++ मानक के अनुरूप है, जब तक यह सभी अनिवार्य निदान जारी करता है; बाद के मामले में, यह निश्चित रूप से अनुरूप नहीं है।

इसे बाद के एक्सटेंशन बनाने के लिए अच्छा अभ्यास माना जाता है वैकल्पिक उदा। कमांड लाइन विकल्प का उपयोग करके, ताकि कार्यान्वयन में अभी भी एक मोड हो जिसमें यह पूरी तरह से मानक अनुरूप है। मेरा तत्काल अनुमान यह है कि वास्तव में वीसी ++ आपको yes, no, i, , iter युक्त अच्छी तरह से गठित प्रोग्राम लिखने की अनुमति देता है जो मानक (कार्यान्वयन बग के बावजूद) के अनुसार व्यवहार करेगा।

आईडीई एक अलग जानवर है, हालांकि। इसे सी ++ मानक के दायरे से बाहर माना जाता है, और आपको पूरी तरह से अच्छी तरह से गठित कोड लिखने से हतोत्साहित या रोक सकता है।यह अभी भी कार्यान्वयन के मुद्दे की गुणवत्ता होगी, या ग्राहक संतुष्टि का मुद्दा होगा, यदि आप करेंगे।

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