जब मैं सी # में पुराने कोड में से कुछ पर काम कर रहा था, मैं एक कोड है जो मुझे खीझ होती है का सामना करना पड़ा।
यहां कई परेशानी की समस्याएं हैं। आइए उन सभी को सूचीबद्ध करें।
private string foo(string _text)
{
/* some manipulation on _text */
return _text = Server.HtmlDecode(_text);
}
यह अंतिम पंक्ति जो मुझे
irks टिप्पणी भी irksome है। स्थानीय चर सस्ते हैं। _text
के मूल मान को मिटाने की कोई आवश्यकता नहीं है। इसके बजाय, एक नया स्थानीय चर बनाओ और उसमें हेरफेर करें। इस तरह, जब आप विधि में किसी भी बिंदु पर डिबग कर रहे हैं तो आप जान सकते हैं कि मूल तर्क था। (याद रखें, मूल तर्क कचरा संग्रह के लिए योग्य हो सकता है जब चर वैरिएबल ओवरराइट हो जाता है, और इसलिए हमेशा के लिए खोया जा सकता है।)
एक बहुत अच्छे कारण के बिना औपचारिक पैरामीटर पर न लिखें। यह डीबग करना मुश्किल बनाता है।
असाइनमेंट ऑपरेटर का मान बाएं ऑपरेंड है, इसलिए मैं इसे देख सकता हूं।
यह इस मामले में सही है लेकिन सामान्य रूप से गलत है; सी # में असाइनमेंट ऑपरेटर का मान दाएं ऑपरेंड का मूल्य बाएं हाथ की ओर से जुड़े प्रकार में परिवर्तित होने के बाद का मान है। याद रखें, बाईं ओर की ओर कोई मूल्य नहीं हो सकता है; यह केवल एक लेखन संपत्ति हो सकती है।
क्या यह सी # में एक ordinate अभ्यास है कि मुझे आदी होने की जरूरत है?
यहां एक मानक अभ्यास है, हां। इस उपयोग के बारे में विचित्र क्या है (1) कि चुना गया चर औपचारिक है, और (2) कि असाइनमेंट return
के साथ संयुक्त है।
string decoded = Server.HtmlDecode(_text);
return decoded;
अब आप सोच सकते हैं कि इस के सम्मोहक लाभ खत्म हो गया है कि तुम क्या सुझाव है:
return Server.HtmlDecode(_text);
जवाब है:
यह कहना सी # में एक मानक अभ्यास हो रहा था जब विजुअल स्टूडियो 2013, विधि कॉल के लौटे हुए मूल्य की जांच करने के लिए डीबगर में कोई सुविधा नहीं थी! इसलिए यदि आप देखने के लिए क्या मूल्य HtmlDecode
द्वारा वापस चाहते थे, जबकि डिबगिंग आप निम्नलिखित विकल्पों था: विधानसभा स्तर पर
- डिबग और
HtmlDecode
में कदम EAX की सामग्री को देखने और अपने राज्य की जांच वर्तमान पद्धति से बाहर
- चरण और यह जांच जो कुछ भी वापसी मान
- को सौंपा गया था डीबगर में एक अन्यथा बेकार स्थानीय चर लिए परिणाम असाइन करें और स्थानीय तो जांच
चूंकि पहले तीन भयंकर हैं और आखिरी वाला आसान है, यही कारण है कि कई सी # प्रोग्रामर करने की आदत में हैं।
आप ऐसा करते हैं और उसके बाद करना नहीं का उपयोग स्थानीय जिसके परिणामस्वरूप, तो सी # संकलक जानता है कि यह एक आम बात है और जानबूझकर को दबा चेतावनी "आप एक स्थानीय आप फिर से कभी नहीं पढ़ने के लिए लिखा था"। यह केवल उस चेतावनी देता है यदि स्थानीय ने लगातार इसके लिए लिखा था, इस मामले में आप पहले से ही जानते थे कि यह संकलन समय पर क्या था और आमतौर पर इसे डीबगर में जांचने की आवश्यकता नहीं होती है।
उम्मीद है कि वीएस2013 अंततः इस अक्सर अनुरोधित सुविधा का समर्थन करता है, इस प्रकार का पैटर्न धीरे-धीरे गायब हो जाएगा।
'_text' निश्चित रूप से वैश्विक चर नहीं है, यह विधि का पैरामीटर है। –
असाइनमेंट वास्तव में आवश्यक है? आप बाद में '_text' के साथ कुछ भी करने में सक्षम नहीं होंगे और यह संभवतः दायरे से बाहर निकलने की संभावना है। –
@ एलसी। यही वह है जो मैं आंशिक रूप से पूछ रहा था; अगर इसका कोई मतलब था। जो मैंने एकत्र किया है उसके आधार पर, मुझे नहीं लगता है। –