2009-05-07 14 views
6

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

क्या सभी सदस्य चर के अंडरस्कोर होने के इस लाभ के लिए कोई काउंटर तर्क है?

उत्तर

21

हाँ - कुछ लोगों के लिए यह पठनीयता को कम करता है। मेरा मानना ​​है कि अलग-अलग लोग अलग-अलग तरीकों से पढ़ते हैं (कुछ आंतरिक रूप से मुखरता और दूसरों को उदाहरण के लिए नहीं)। कुछ लोगों के लिए (स्वयं शामिल) अंडरस्कोर कोड पढ़ने के दौरान "प्रवाह" को बाधित करता है।

मैं तर्क दूंगा कि यदि आपको स्थानीय और आवृत्ति चर अलग-अलग कहने में कठिनाई हो रही है, तो संभवतः या तो आपकी विधियां बहुत बड़ी हैं या आपकी कक्षा बहुत अधिक कर रही है। यह हमेशा पाठ्यक्रम का मामला नहीं होने वाला है, लेकिन मुझे छोटी कक्षाओं/विधियों के साथ यह कोई समस्या नहीं है।

+1

मैं किसी को भी संदर्भित करने जा रहा हूं जो सोचता है कि अंडरस्कोर उपसर्ग इस उत्तर का एक अच्छा विचार है। –

+3

अच्छी तरह से, मैं हमेशा अंडरस्कोर का उपयोग कर रहा हूं .. मेरे लिए यह। 1) अधिक टाइपिंग 2) गलती से छोड़ने के लिए आसान 3) अंडरस्कोर पढ़ने के लिए आसान है (मेरे दृष्टिकोण से) क्योंकि यह। वीबी की तरह अधिक है "फिर" "अगर अंत" 4) और इससे कोई फर्क नहीं पड़ता कि आपकी विधि कितनी छोटी या बड़ी है, स्थानीय और कक्षा के निशान – Jack0fshad0ws

+0

@ जैक 0fshad0ws के बीच स्पष्ट रूप से अंतर करना हमेशा फायदेमंद है: यह निश्चित रूप से स्वाद का विषय है। निजी तौर पर यह मेरे लिए बहुत ज्यादा प्रवाह को तोड़ने विराम चिह्न कहते हैं। मैं हर जगह 'यह' जोड़ने का सुझाव नहीं दे रहा था - मैं सिर्फ वाक्यविन्यास या उपसर्ग के साथ अंतर नहीं करता हूं। मुझे आखिरी बार याद नहीं आया कि मैं स्थानीय और आवृत्ति चर के बीच थोड़ा उलझन में था। तरीकों कम रखते हुए और नाम अच्छी तरह से चुनने यह बहुत स्पष्ट है कि क्या आप तार्किक वस्तु राज्य के क्षणिक जानकारी के साथ काम कर रहे हैं बनाता है। –

7

अंडरस्कोर का उपयोग करना उस प्रभाव को प्राप्त करने का एक ही तरीका है। महत्वपूर्ण बात यह है कि इसके बारे में सुसंगत रहें।

+0

और माइक्रोसॉफ्ट भी .NET Framework में संगत नहीं है ...;) – Siewers

13

यदि यह केवल इंटेलिजेंस है जो आप चाहते हैं तो आप इसे हमेशा "this." टाइप करके प्राप्त कर सकते हैं।

ठीक है, यह "_" से 4 और वर्ण हैं, लेकिन इंटेलिजेंस तब आपके सदस्यों को आपके लिए लाएगा।

यदि आप अंडरस्कोर का उपयोग करते हैं और आपकी टीम अंडरस्कोर का उपयोग करती है तो उनका उपयोग जारी रखें। अन्य लोग "m _" का उपयोग करेंगे, अन्य के पास अन्य विचार हो सकते हैं। मैं स्टाइलकॉप का उपयोग करता हूं और मेरी टीम पर बहस समाप्त हो जाती है, हम "this" का उपयोग करते हैं। और हंगरी शैली या अंडरस्कोर उपसर्ग का उपयोग नहीं किया जाता है। और हम अभी इसके बारे में चिंता मत करो।

[संपादित करें] यह आपके प्रश्न की आलोचना नहीं है - यह एक वैध सवाल है और यह पूछने लायक है - लेकिन यह बहस देव परियोजनाओं पर बहुत अधिक समय बर्बाद कर देती है। हालांकि मुझे स्टाइलकॉप के बारे में हर चीज पसंद नहीं है, मैं स्वेच्छा से इसका उपयोग करता हूं क्योंकि यह इस तरह की बहस में कटौती करता है। गंभीरता से, मैं घंटों की लंबी बैठकों में रहा हूं जहां इस तरह की चर्चा पूरी देव टीम पर है। पागल। जैसा कि मैंने कहा, अपने प्रश्न मान्य है, लेकिन इस पर अपनी खुद की समय agonizing बर्बाद मत करो कृपया, यह इसके लायक नहीं है :-)

+0

+1 मैं सहमत हूं - यदि आप बहस को शॉर्टकट कर सकते हैं तो ऐसा करें। – ChrisF

+0

प्लस मुझे लगता है कि 'यह।' पठनीयता में सुधार करता है। सिंटैक्स को हाइलाइट करने के साथ-साथ एक नज़र में निजी चर को स्पॉट करना भी आसान हो जाता है। – Cocowalla

3

यह वास्तव में नहीं बात नहीं क्या नामकरण परंपरा आप जब तक आप में उपयोग के रूप में चुन पूरी परियोजना

+9

मेरा मानना ​​है कि यह * मायने रखता है। यदि आपके पास नामकरण सम्मेलन है जहां हर प्रकार के प्रत्येक सदस्य प्रोजेक्ट नाम से शुरू होते हैं, उदाहरण के लिए, आप क्रूफ्ट और कोड की एक बड़ी राशि के साथ समाप्त होते हैं जो पढ़ने में मुश्किल होती है। संगति निश्चित रूप से बहुत महत्वपूर्ण है, बिट यह * केवल * महत्वपूर्ण बात नहीं है। –

5

अंडरस्कोर को हंगेरी नोटेशन * के रूप में देखा जा सकता है, लेकिन उपसर्ग किसी अर्थ के बजाय "जादुई चरित्र" है।

यदि आप कुछ ऐसा चाहते हैं जो उपसर्ग के बारे में अधिक कहता है, तो आप member या mbr या m जैसे उपसर्ग का उपयोग करेंगे। कभी-कभी उपसर्ग m_ का उपयोग किया जाता है, लेकिन फिर अंडरस्कोर को उपसर्ग के भाग के बजाय विभाजक के रूप में उपयोग किया जाता है, और .NET के लिए नामकरण अनुशंसाओं का कहना है कि इसे विभाजक के रूप में उपयोग नहीं किया जाना चाहिए।

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

और हमेशा के रूप में, मानक चुनने और इसके साथ चिपकना ज़रूरी है, यह मानक है कि आप वास्तव में चुनते हैं।


* हंगेरी notaition ज्यादातर डेटा VBScript की तरह कमजोर टाइप किया भाषाओं में लिखने निर्दिष्ट करने के लिए इस्तेमाल किया जाने लगा है, लेकिन मूल इरादा तो है सदस्य चर के लिए उपयोग चर के अन्य गुणों को निर्दिष्ट करने की थी, मूल के साथ अधिक इरादों।

2

इसका उपयोग करना। हर जगह मेरी राय में पठनीयता कम कर देता है। निजी वर्ग क्षेत्रों के लिए अंडरस्कोर उपसर्ग पूरी तरह से स्वीकार्य है। इसकी शायद हंगेरियन जो वास्तव में भयानक नामकरण सम्मेलन है और इंटेलिजेंस फ्रंट टाइपिंग _ प्लस एक पत्र पर आपकी सूची लाने का एक बेहद तेज़ तरीका है। मैं CSLA.NET का उपयोग करता हूं और कई बीओ उदाहरण अंडरस्कोर सम्मेलन का उपयोग करते हैं और मैं इसे अपने सभी कामों में उपयोग करना जारी रखता हूं। पुराना स्कूल पूर्व सी ++ और सी डेवलपर्स को यह सोचने में डर न दें कि यह अच्छा अभ्यास नहीं है - .NET को एक ही समस्या का सामना नहीं करना पड़ता है। एक अच्छा उदाहरण कंस्ट्रक्टर्स में तर्क गुजर रहा है:

public MyObject(int field1, int field2, int field3) 
{ 
    _field1 = field1; 
    _field2 = field2; 
    _field3 = field3; 
} 

मेरी राय में एक बहुत अधिक

public MyObject(int field1, int field2, int field3) 
{ 
    this.field1 = field1; 
    this.field2 = field2; 
    this.field3 = field3; 
} 

से पढ़ी जा सकती है लेकिन यह व्यक्तिगत स्वाद है और के रूप में कहीं और कहा गया है स्थिरता सबसे महत्वपूर्ण मुद्दा है।

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