هل تستخدم الأعضاء بيانات أو الأملاك العامة من داخل الفئة نفسها؟

StackOverflow https://stackoverflow.com/questions/1075988

سؤال

وإذا كان لدي الإعداد الطبقة بسيط مثل هذا:

class MyClass
{
    private string _myName = string.Empty;

    public string MyName
    {
        get
        {
            return _myName;
        }
    }

    public void DoSomething()
    {
        // Get the name...
        string name = string.Empty;

        name = _myName;

        // OR

        name = MyName;

        // ...and do something with it...
    }
}

والتي يجب أن استخدمها، والممتلكات العامة، أو عضو البيانات؟

من الواضح، في هذا المثال أنها لا تحدث فرقا، لأن كلا منهما فقط الرجوع إلى نفس المتغير. ولكن ماذا عن العالم الحقيقي يستخدم من خصائص العامة؟

في عام، لا خصائص الدولة في أداء قليلة جدا، وفي هذه الحالة لا بأس أن تسميها؟ أو يفعل الناس وضعت الكثير من الوظائف في الأملاك العامة التي لا ينبغي أن يتم استدعاؤها من قبل المراجع الطبقة الداخلية؟

ورأيت شيئا في وظيفة أخرى حول عدم وضع الكثير من الوظائف في خصائص، منذ دراستها في المصحح يمكن أن تؤدي إلى نتائج غير متوقعة. هل هذا صحيح؟

هل كانت مفيدة؟

المحلول

استخدم العقار - أي منطق يمكن أن تكون مغلفة داخل اضعي ويجب حاصل على تطبيق، حتى داخل الطبقة نفسها. إذا كان هناك أي منطق في حاصل على واضعة فإنه لا يزال غير آمنة للاستخدام في المجالات نفسها لأنه إذا كان في أي لحظة كنت ترغب في إضافة منطق حول الوصول إلى تلك الحقول سيكون لديك لريفاكتور أكثر من ذلك بكثير.

نصائح أخرى

وأعتقد أنه يجب الرجوع إلى الملكية على سبيل الممارسة العامة. في حين أنه في هذا المثال بالذات حقا لا يجعل الكثير من الفرق، والحصول على / مجموعة من يمكنهم الدخول توفر القدرة على بذل المزيد من العمل قليلا عند الاستيلاء على الممتلكات. على سبيل المثال، فإن العديد من ممتلكاتنا "الحصول على" يمكنهم الدخول أداء بعض بحث داخل بنية بيانات أكثر تعقيدا أو مجموعة القيم الافتراضية إذا تم تعريف أي شيء. ذلك أن ما تبقى من الطبقة يمكن الاستفادة من هذا المنطق، ونحن جعل عادة باستخدام خصائص. فقط لذلك نحن لا يجب أن نفكر من الصعب جدا حول هذا الموضوع، ونحن نحاول تعميم هذه الممارسة.

قد تكون هناك حالات التي نريد الوصول مباشرة إلى عضو البيانات الأساسية، ولكن بعد ذلك قرارا واعيا مع سبب محدد، وأنه يميل إلى أن يكون الاستثناء.

وأنا أفضل الخصائص لأنهم بسهولة التعامل مع الحالات للقراءة فقط وأنه من السهل للالتفاف عليها مع أي التحقق من صحة الأساسي قد تحتاج إلى القيام به.

إذا أنا مجرد إعادة قيمة المتغير الداخلي، وجعل الجمهور متغير - ليس هناك ضرر في ذلك. لقد استعملت دائما الأملاك العامة عندما كنت تريد أن تفعل شيئا في الاستجابة إلى أي عرض أو تغيير قيمة - أي الكتابة إلى قاعدة بيانات، تعيين شيء آخر أيضا (كما هو الحال في الجزء الثاني من المثال الخاص بك) <. / P>

والسؤال الذي يجب أن يطرح هو ما إذا كنت تريد ما يحدث داخل الفصول الدراسية لتحريك هذه الأحداث. إذا قمت بذلك، بنفس الطريقة والمتصل الخارجي سوف، ثم الوصول إلى القيم عبر الممتلكات. إذا كنت ترغب فقط في قراءة قيمة، استخدم المتغير الداخلي.

لإجابة على سؤالك، ليس هناك ضرر من القيام بذلك في اي من الاتجاهين - نظر فقط من الآثار الجانبية المحتملة

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top