मुझे C और C ++ प्रोग्राम में प्रकार कैसे चिह्नित करने चाहिए?


12

में मेरा यह जवाब , मैं इस्तेमाल किया _tप्रकार हैं, जिनमें सबसे अच्छे रूप में, विवादास्पद समाप्त हो गया के अंत में। यह वह अभ्यास है जिसका उपयोग मैं अपनी वर्तमान परियोजनाओं में करता हूं।

typedef struct {
    int x;
    int y;
} point_t;

इस से सी प्रकार के अनुरूप होना करने का इरादा था stddef.hकी तरह size_tया ptrdiff_t। हालांकि, मेरे प्रश्नों में कुछ टिप्पणियों के अनुसार, _tपोस्टफिक्स पोसिक्स के लिए आरक्षित है। इसके बजाय मुझे क्या उपयोग करना चाहिए _t? या मैं _tवैसे भी उपयोग जारी रखना चाहिए ?

यह प्रश्न C और C ++ दोनों के लिए है। अगर इन भाषाओं में अलग-अलग परंपराएँ हैं, तो बेझिझक जवाब दें।


2
एक सामान्य सम्मेलन में क्लास के नाम होते हैं जो लुकलाइकटिस। उस बिंदु पर आपको प्रत्यय की भी आवश्यकता नहीं है। (यह जावा, .net आदि के लिए अधिक सामान्य है लेकिन यह C ++ में भी काम करता है।)
cHao

1
अंततः यह हंगेरियन नोटेशन का एक रूप है। और वह चर्चा अंतहीन है। मैं अब इसके खिलाफ हूं और cHao के समाधान के साथ जा रहा हूं। क्यों? क्योंकि मैंने हर चीज के लिए लगभग 4 साल तक हंगेरियन नोटेशन का उपयोग किया, फिर इसके बिना एक प्रोजेक्ट करने का फैसला किया और इसे बिल्कुल याद नहीं किया। और उस पर समय बर्बाद नहीं किया। इसलिए मैंने इसे पूरी तरह से गिरा दिया, क्योंकि मेरे लिए यह स्पष्ट नहीं था। और मैंने कभी पीछे मुड़कर नहीं देखा।
१५

1
आरक्षित पहचानकर्ताओं के लिए यह प्रश्न देखें (सहित _t) stackoverflow.com/a/228797/14065
मार्टिन यॉर्क

जवाबों:


16

नामकरण प्रकारों के संबंध में C और C ++ समुदायों के भीतर कोई सहमति नहीं है।

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

वैकल्पिक नामकरण सम्मेलनों के लिए उपसर्ग का उपयोग करने का सुझाव देते हैं, जैसे कि Cया T


16

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


3
और मुझे यह अच्छा लगता है कि एक स्टाइल डिफरेंट है जो मानक C प्रकार से है, इसलिए कोड को पढ़कर आप आसानी से पता लगा सकते हैं कि क्लाइंट प्रोग्राम से क्या है और एपीआई क्या है
Nikko

1
मेरी पसंदीदा तकनीक भी। प्रकारों में एक प्रारंभिक अपरकेस अक्षर होता है। अन्य सभी पहचानकर्ता प्रकार नहीं हैं और इस प्रकार आसानी से देखे जा सकते हैं।
मार्टिन

मैंने हमेशा सोचा था कि यह बहुत बदसूरत लग रहा था। यह देखकर अच्छा लगा कि दूसरे मुझसे सहमत हैं।
syb0rg

मैं केवल सूचक प्रकारों के लिए PascalCase का उपयोग करता हूं (क्योंकि C # और Java जैसी भाषाएं जहां PascalCase का अर्थ है कक्षा, यानी डेटा का संदर्भ) लेकिन मुझे लगता है कि आप कहाँ से आ रहे हैं।
yyny

1

यह आप पर निर्भर करता है। जब तक आरक्षित शब्दों के साथ संघर्ष नहीं होता है तब तक आप जाने के लिए अच्छे हैं। हालाँकि, एक परिदृश्य पर विचार करें जहाँ आप एक कंपनी में काम कर रहे हैं और कई लोग एक ही कोड आधार तक पहुँच रहे हैं, और आपका कोड एक ऐसे व्यक्ति को मिलता है जिसे आपकी आदत के बारे में जानकारी नहीं है / वह तब यह मान सकता है कि यह आरक्षित प्रकार है, खासकर यदि आप point_t जैसा कुछ लिखते हैं। तो, इसे सरल रखें उदा बिंदु बिंदु_ की तुलना में सरल है। और अगर आप इसमें कुछ जोड़ना चाहते हैं, तो आपको नाम के नाम से जोड़ना होगा।

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