c# - मैन्युअल कार्यान्वित गुणों पर स्वत: कार्यान्वित गुणों का उपयोग करने का कोई कारण?




3 Answers

यह आपको संक्षिप्त होने से परे कुछ अतिरिक्त प्रदान नहीं करता है। यदि आप अधिक वर्बोज़ सिंटैक्स पसंद करते हैं, तो हर तरह से इसका उपयोग करें।

ऑटो प्रोप का उपयोग करने का एक फायदा यह है कि यह आपको एक मूर्ख कोडिंग गलती से संभावित रूप से सहेज सकता है जैसे कि गलती से गलत निजी वैरिएबल को किसी संपत्ति में असाइन करना। मेरा विश्वास करो, मैंने इसे पहले किया है!

ऑटो प्रोप के बारे में आपका बिंदु बहुत लचीला नहीं है एक अच्छा है। आपके पास केवल एक ही लचीलापन है जो या तो स्कोप को सीमित private set लिए private get या private set का उपयोग कर रहा है। यदि आपके गेटर्स या सेटर्स के पास कोई जटिलता है तो ऑटो प्रोप अब एक व्यवहार्य विकल्प नहीं हैं।

मैं FIELDS पर संपत्ति के फायदों को समझता हूं, लेकिन मुझे लगता है कि मैन्युअल कार्यान्वित गुणों पर ऑटो-लागू गुणों का उपयोग करने से वास्तव में कोड को देखने के लिए थोड़ा और संक्षिप्त बनाने के अलावा कोई लाभ नहीं मिलता है।

मैं इसका उपयोग करके अधिक आरामदायक महसूस करता हूं:

    private string _postalCode;

    public string PostalCode
    {
        get { return _postalCode; }
        set { _postalCode = value; }
    }

के बजाय:

public string PostalCode { get; set; }

मुख्य रूप से क्योंकि यदि मैं कभी भी प्राप्त करने और सेट करने के किसी भी तरह के कस्टम कार्यान्वयन करना चाहता हूं, तो मुझे किसी भी निजी क्षेत्र द्वारा समर्थित अपनी खुद की संपत्ति बनाना है। तो क्यों शुरुआत से बुलेट को काटते हैं और निरंतरता के लिए सभी गुणों को इस लचीलापन को तुरंत देते हैं? यह वास्तव में एक अतिरिक्त सेकंड नहीं लेता है, यह देखते हुए कि आपको विजुअल स्टूडियो में जो करना है, वह आपके निजी फ़ील्ड नाम पर क्लिक करें, और Ctrl + E दबाएं, और आप कर चुके हैं। और यदि मैं इसे मैन्युअल रूप से करता हूं, तो मैं असंगतता के साथ समाप्त होता हूं जिसमें कुछ विशेष रूप से निजी फ़ील्ड द्वारा समर्थित सार्वजनिक गुणों और कुछ ऑटो-कार्यान्वित गुणों का निर्माण किया जाता है। मैं चारों ओर सुसंगत होने के साथ-साथ सभी ऑटो या सभी मैनुअल के साथ बेहतर महसूस करता हूं।

क्या यह सिर्फ मुझे है? क्या मैं कुछ भूल रहा हूँ? क्या मैं कुछ भूल गया हूँ? क्या मैं स्थिरता पर बहुत अधिक जोर दे रहा हूं? मैं हमेशा सी # सुविधाओं के बारे में वैध चर्चाएं पा सकता हूं, और लगभग हर चीज के लिए हमेशा पेशेवर और विपक्ष होते हैं, लेकिन इस मामले में, मैं वास्तव में ऑटो-कार्यान्वित गुणों का उपयोग करने के खिलाफ अनुशंसा करने वाले किसी भी व्यक्ति को नहीं ढूंढ पाया।




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




मैं हर किसी के बारे में नहीं जानता, लेकिन मुझे लगता है कि मुझे अपने चर और कार्यों का नाम क्या देना चाहिए ताकि अन्य लोग मेरे कोड को समझ सकें।

इसलिए जब मैं स्वत: अनुपूरित गुणों का उपयोग करता हूं, तो मुझे केवल एक बार रोकना होगा

जब मुझे बैकिंग फ़ील्ड की आवश्यकता होती है तो मुझे दो बार रोकना पड़ता है , इसलिए यह थोड़ा सा विकास धीमा कर देता है :)

जिस तरह से मैं करता हूं वह है:

  1. शुरुआत में इसे एक निजी चर बनाओ
  2. यदि आवश्यक हो तो इसे सार्वजनिक ऑटो-लागू करें।
  3. अगर मुझे कुछ कोड प्राप्त करने या सेट करने की आवश्यकता है तो इसे बैकिंग फ़ील्ड में बदलें।

यदि कक्षा के विभिन्न गुण अलग-अलग सामने आते हैं तो कुछ भी गलत नहीं है।




Related