ConstructiCat Logo
CodeBust.
Browse section ▾

نقل الحقل (Move Field).

Problem

يتم استخدام حقل في فئة أخرى أكثر من استخدامه في الفئة الخاصة به.

Solution

أنشئ حقلاً في فئة جديدة ووجّه جميع مستخدمي الحقل القديم إليه.

##Example

قبل
Move Field - Before
بعد
Move Field - After

##Why Refactor

غالباً ما يتم نقل الحقول كجزء من تقنية استخراج فئة (Extract Class). وقد يكون تحديد الفئة التي يجب ترك الحقل فيها أمراً صعباً. إليك قاعدتنا العامة: ضع الحقل في نفس مكان التوابع التي تستخدمه (أو حيث توجد معظم هذه التوابع).

ستساعد هذه القاعدة في الحالات الأخرى التي يكون فيها الحقل موجوداً ببساطة في المكان الخاطئ.

##How to Refactor

  1. إذا كان الحقل عاماً (Public)، فستكون إعادة الهيكلة أسهل بكثير إذا جعلت الحقل خاصاً (Private) ووفرت توابع وصول عامة (لهذا الغرض، يمكنك استخدام تغليف الحقل (Encapsulate Field)).

  2. أنشئ نفس الحقل مع توابع الوصول إليه في الفئة المستقبِلة.

  3. حدد كيفية الإشارة إلى الفئة المستقبِلة. قد يكون لديك بالفعل حقل أو تابع يعيد الكائن المناسب؛ وإذا لم يكن كذلك، فستحتاج إلى كتابة تابع أو حقل جديد لتخزين كائن الفئة المستقبِلة.

  4. استبدل جميع الإشارات إلى الحقل القديم بالاستدعاءات المناسبة للتوابع في الفئة المستقبِلة. إذا لم يكن الحقل خاصاً، فاهتم بهذا الأمر في الفئة الفائقة (Superclass) والفئات الفرعية (Subclasses).

  5. احذف الحقل من الفئة الأصلية.