سؤال

يبدو أن كل ج# ثابت محلل يريد أن يشكو عندما يرى حقل العام.ولكن لماذا ؟ بالتأكيد هناك حالات حيث الجمهور (أو الداخلية) المجال هو بما فيه الكفاية ، وليس هناك نقطة في وجود مكان get_ و set_ الأساليب ؟ ماذا لو كنت على يقين أنه لن يكون إعادة تحديد حقل أو إضافة إلى ذلك (آثار جانبية سيئة, صحيح؟) - لا يجب بسيط مجال كافية ؟

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

المحلول

ولأنه يكسر التغليف - وهذا هو السبب في أن معظم الناس استخدام يمكنهم الدخول بشكل كبير. ومع ذلك، إذا كنت تعتقد انها الحل الصحيح لمهمتك، تجاهل ذلك (أي شكاوى التغليف صارمة)، وفعل ما هو صحيح للمشروع الخاص بك. لا تدع النازيين OO اقول لكم خلاف ذلك.

نصائح أخرى

انها حقا حول التدقيق المستقبل التعليمات البرمجية الخاصة بك.عندما تقول (التشديد من الألغام):

ماذا لو كنت متأكد لن يتم تعريف الحقل أو إضافة إلى فإنه (آثار جانبية سيئة, صحيح؟) - لا بسيطة مجال كافية ؟

هذا هو مطلق البيان ، كما نعلم (وكذلك معظم ساكنة تحليل), هناك اثنين فقط من المطلقات في الحياة.

إنه فقط يحاول حمايتك من ذلك.إذا كان أي مشكلة ، يجب أن تكون قادرا على أن أقول محلل تجاهل ذلك (من خلال السمات التي تعتمد على أداة تحليل تستخدمه).

نظرا لحقيقة أن التيار C# 3.0 يسمح التلقائي خصائص الذي هو جملة مثل:

public int Property {get; set;}

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

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

ولأن تغيير المجالات العامة في وقت لاحق أن يكون الحصول على / مجموعة من يمكنهم الدخول وكسر الشفرة. انظر هذه الإجابة للحصول على مزيد من المعلومات

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

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

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

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

ودعونا لا ننسى أن من يمكنهم الدخول تعطيك المرونة عند التعامل مع المواضيع المتعددة.

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