الفرق بين المراجعتين لصفحة: «Refactoring/pull up field»

من موسوعة حسوب
طلا ملخص تعديل
ط مراجعة وتدقيق.
 
(مراجعتان متوسطتان بواسطة مستخدم واحد آخر غير معروضتين)
سطر 4: سطر 4:


== الحل ==
== الحل ==
إزالة الحقل من الأصناف الفرعية ونقله إلى الصنف الفائق.
إزالة الحقل من الأصناف الفرعية ونقله إلى الصنف الأعلى.


=== مثال ===
=== مثال ===


==== قبل إعادة التصميم ====
==== قبل إعادة التصميم ====
[[ملف:Pull Up Field - Before.png|بديل=أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.|بدون|تصغير|أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.]]
يحتوي الصنفان <code>Tank</code> و <code>Soldier</code> المتفرعان من الصنف <code>Unit</code> على الحقل المشترك <code>health</code>:[[ملف:Pull Up Field - Before.png|alt=يحتوي الصنفان Soldier و Tank على نفس الحقل health.|بدون|تصغير|يحتوي الصنفان <code>Soldier</code> و <code>Tank</code> على نفس الحقل <code>health</code>.]]


==== بعد إعادة التصميم ====
==== بعد إعادة التصميم ====
[[ملف:Pull Up Field - After.png|بديل=أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.|بدون|تصغير|أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.]]
إزالة الحقل <code>health</code> من الأصناف الفرعية (الصنف <code>Soldier</code> والصنف <code>Tank</code>) ونقله إلى الصنف <code>Unit</code> الأب:[[ملف:Pull Up Field - After.png|بديل=أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.|بدون|تصغير|إزالة الحقل <code>health</code> من الأصناف الفرعية ونُقل إلى الصنف الأب.]]


== لم إعادة التصميم؟ ==
== لم إعادة التصميم؟ ==
سطر 19: سطر 19:
== فوائد تطبيق الحل ==
== فوائد تطبيق الحل ==
* إزالة تكرار الحقول في الأصناف الفرعية.
* إزالة تكرار الحقول في الأصناف الفرعية.
* تسهيل النقل المتتابع للتوابع المتكررة إذا كانت موجودة من الأصناف الفرعية إلى الصنف الفائق.
* تسهيل النقل المتتابع للتوابع المتكررة إذا كانت موجودة في الأصناف الفرعية إلى الصنف الفائق.


== آلية الحل ==
== آلية الحل ==
# تأكد من أن الحقول تُستخدَم لنفس الاحتياجات في الأصناف الفرعية.
# تأكد من أن الحقول تُستخدَم لنفس الاحتياجات في الأصناف الفرعية.
# إذا كان للحقول أسماء مختلفة، أعطهم نفس الاسم واستبدل كل المراجع إلى الحقول في الشيفرة الحالية.
# إذا كان للحقول أسماء مختلفة، أعطها نفس الاسم واستبدل كل المراجع إلى الحقول في الشيفرة الحالية.
# أنشئ حقل من نفس الاسم في الصنف الفائق. لاحظ أنه إذا كانت الحقول خاصة، فأنه يجب حماية حقل الصنف الفائق.
# أنشئ حقلًا من نفس الاسم في الصنف الأعلى. لاحظ أنه إذا كانت الحقول خاصة، فيجب حماية حقل الصنف الأعلى.
# أزل الحقول من الأصناف الفرعية.
# أزل الحقول من الأصناف الفرعية.
# قد ترغب في أخذ [[Refactoring/self encapsulate field|التغليف الداخلي للحقول]] في الاعتبار بالنسبة للحقل الجديد، من أجل إخفائه خلف توابع الوصول.
# قد ترغب في أخذ [[Refactoring/self encapsulate field|التغليف الداخلي للحقول]] في الاعتبار بالنسبة للحقل الجديد، من أجل إخفائه خلف توابع الوصول.
سطر 37: سطر 37:
[[تصنيف:Refactoring]]
[[تصنيف:Refactoring]]
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Dealing with Generalization]]
[[تصنيف:Refactoring Dealing with Generalization]]

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

المشكلة

يحتوي صنفان على نفس الحقل.

الحل

إزالة الحقل من الأصناف الفرعية ونقله إلى الصنف الأعلى.

مثال

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

يحتوي الصنفان Tank و Soldier المتفرعان من الصنف Unit على الحقل المشترك health:

يحتوي الصنفان Soldier و Tank على نفس الحقل health.
يحتوي الصنفان Soldier و Tank على نفس الحقل health.

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

إزالة الحقل health من الأصناف الفرعية (الصنف Soldier والصنف Tank) ونقله إلى الصنف Unit الأب:

أُزيل الحقل health من الأصناف الفرعية ونُقل إلى الصنف الفائق.
إزالة الحقل health من الأصناف الفرعية ونُقل إلى الصنف الأب.

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

تنمو الأصناف الفرعية وتتطور بشكل منفصل، مما يتسبب في ظهور حقول وتوابع متطابقة (أو شبه متطابقة).

فوائد تطبيق الحل

  • إزالة تكرار الحقول في الأصناف الفرعية.
  • تسهيل النقل المتتابع للتوابع المتكررة إذا كانت موجودة في الأصناف الفرعية إلى الصنف الفائق.

آلية الحل

  1. تأكد من أن الحقول تُستخدَم لنفس الاحتياجات في الأصناف الفرعية.
  2. إذا كان للحقول أسماء مختلفة، أعطها نفس الاسم واستبدل كل المراجع إلى الحقول في الشيفرة الحالية.
  3. أنشئ حقلًا من نفس الاسم في الصنف الأعلى. لاحظ أنه إذا كانت الحقول خاصة، فيجب حماية حقل الصنف الأعلى.
  4. أزل الحقول من الأصناف الفرعية.
  5. قد ترغب في أخذ التغليف الداخلي للحقول في الاعتبار بالنسبة للحقل الجديد، من أجل إخفائه خلف توابع الوصول.

انظر أيضًا

مصادر