الفرق بين المراجعتين ل"Refactoring/remove setting method"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: ازالة توابع الإعدادات (Remove Setting Method)}}</noinclude> == المشكلة == يكون تعيين قيمة الحقل...')
 
ط (مراجعة وتدقيق.)
 
سطر 9: سطر 9:
  
 
==== قبل إعادة التصميم ====
 
==== قبل إعادة التصميم ====
[[ملف:Remove Setting Method - Before.png|بديل=يغيّر التابع من قيمة الحقل.|بدون|تصغير|يغيّر التابع من قيمة الحقل.]]
+
يضبط التابع <code>()setImmutableValue</code> قيمةً غير قابلة للتغيير أو التعديل في المستقبل:[[ملف:Remove Setting Method - Before.png|بديل=يغيّر التابع من قيمة الحقل.|بدون|تصغير|يغيّر التابع من قيمة الحقل.]]
[[ملف:Remove Setting Method - After.png|بديل=إزالة التابع الذي يضبط قيمة الحقل.|بدون|تصغير|إزالة التابع الذي يضبط قيمة الحقل.]]
 
  
 
==== بعد إعادة التصميم ====
 
==== بعد إعادة التصميم ====
 +
حذف التابع <code>()setImmutableValue</code> من الصنف <code>Customer</code>:[[ملف:Remove Setting Method - After.png|بديل=إزالة التابع الذي يضبط قيمة الحقل.|بدون|تصغير|إزالة التابع الذي يضبط قيمة الحقل.]]
  
 
== لم إعادة التصميم؟ ==
 
== لم إعادة التصميم؟ ==
سطر 18: سطر 18:
  
 
== آلية الحل ==
 
== آلية الحل ==
# يجب أن تكون قيمة الحقل قابلة للتغيير فقط في المُنشئ. إذا كان المُنشئ لا يحتوي على معامل لضبط القيمة، أضف واحدًا.
+
# يجب أن تكون قيمة الحقل قابلة للتغيير فقط في الباني. إذا كان الباني لا يحتوي على معامل لضبط القيمة، أضف واحدًا.
 
# ابحث عن جميع استدعاءات الضابط.
 
# ابحث عن جميع استدعاءات الضابط.
#* إذا وُضِع استدعاء ضابط مباشرة بعد استدعاء مُنشئ الصنف الحالي، انقل وسيطه إلى استدعاء المُنشئ واحذف الضابط.
+
#* إذا وُضِع استدعاء ضابط مباشرة بعد استدعاء باني الصنف الحالي، انقل وسيطه إلى استدعاء الباني واحذف الضابط.
#* استبدل استدعاءات الضابط في المُنشئ بالوصول المباشر إلى الحقل.
+
#* استبدل استدعاءات الضابط في الباني بالوصول المباشر إلى الحقل.
 
# احذف الضابط.
 
# احذف الضابط.
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
 
* [[Refactoring/change reference to value|تبديل المرجع إلى قيمة (Change Reference to Value)]].
 
* [[Refactoring/change reference to value|تبديل المرجع إلى قيمة (Change Reference to Value)]].
 +
* [[Refactoring/data clumps|البيانات المُجمَّعة (Data Clumps)]].
 +
* [[Refactoring/preserve whole object|الحفاظ على الكائن كاملًا (Preserve Whole Object)]].
  
 
== مصادر ==
 
== مصادر ==
سطر 31: سطر 33:
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring Techniques]]
 
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Simplifying Method Calls]]
+
[[تصنيف:Refactoring Simplifying Method Calls]]

المراجعة الحالية بتاريخ 07:52، 26 فبراير 2019

المشكلة

يكون تعيين قيمة الحقل فقط عند إنشائه، ولا تتغير في أي وقت لاحق.

الحل

إزالة التوابع التي تضبط قيمة الحقل.

مثال

قبل إعادة التصميم

يضبط التابع ()setImmutableValue قيمةً غير قابلة للتغيير أو التعديل في المستقبل:

يغيّر التابع من قيمة الحقل.
يغيّر التابع من قيمة الحقل.

بعد إعادة التصميم

حذف التابع ()setImmutableValue من الصنف Customer:

إزالة التابع الذي يضبط قيمة الحقل.
إزالة التابع الذي يضبط قيمة الحقل.

لم إعادة التصميم؟

إذا كنت تريد منع أي تغييرات في قيمة الحقل.

آلية الحل

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

انظر أيضًا

مصادر