هل يجب أن تنتقل متغيرات المنشئ مباشرة إلى الحقول أو الخصائص الخاصة؟

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

  •  02-07-2019
  •  | 
  •  

سؤال

الآن هذا هو .NET ولكنني متأكد من أن المبدأ الأساسي يجب أن ينطبق على جميع لغات OOP، ولتبسيط الأمر سأأخذ .NET كمثال:

عادةً ما يكون R# مُنشئًا ويمرر المتغير الوارد إلى الحقل الخاص، والذي بالنسبة لي أميل إلى تمريره إلى الخاصية.

هل هناك أي رأي حول كيفية الاختلاف وما هي أفضل الممارسات لذلك؟

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

المحلول

يعد استخدام الخصائص أمرًا جيدًا طالما أنها ليست افتراضية/متجاوزة.الخصائص هي في الأساس طرق، ويجب ألا تستدعي الأساليب الافتراضية من داخل المنشئ لأن النوع المناسب ربما لم يتم إنشاؤه بعد.وقد أدرجت مايكروسوفت خاصة بهم مجموعة من المبادئ التوجيهية, ، فقط قم بالتمرير لأسفل لرؤية الإرشادات ذات الصلة ومقتطف التعليمات البرمجية الذي يوضح المشكلة (إنها توضح ذلك باستخدام الطرق، ولكن كما ذكرت، فإن خصائص .NET هي في الأساس طرق خاصة).

نصائح أخرى

يتيح لك تمرير المعلمة من خلال أداة ضبط الخاصية الاحتفاظ بأي رمز تحقق في مكان واحد فقط.

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

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

أنا أتعامل مع الحقول داخل المنشئ.تمثل الحقول حقًا الحالة المتأصلة لكائنك، ومهمة المنشئ هي تهيئة هذه الحالة الداخلية.الخصائص موجودة هنا فقط لغرض التغليف، وهي جزء من الواجهة العامة لحالة الكائن.

قد يكون منطق التحويل الذي تطبقه على وسيطات المُنشئ أو على قيم إدخال الخصائص قبل تعيين الحالة الداخلية للكائن مختلفًا تمامًا.على أي حال، إذا كان الأمر كذلك، فقد اعتدت استخدام طريقة تحويل صريحة يتم استدعاؤها من محدد الخاصية ومن المنشئ، بدلاً من ربط المنشئ مباشرة بمحدد الخاصية.

إذا لم يكن هناك منطق على الإطلاق، فلا أستطيع أن أرى سبب رغبتك في استخدام أداة ضبط الخاصية داخل المُنشئ.

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