ConstructiCat Logo
CodeBust.
Browse section ▾

الحفاظ على الكائن كاملاً (Preserve Whole Object).

Problem

تحصل على قيم متعددة من كائن ثم تمررها كمعاملات إلى تابع.

Solution

بدلاً من ذلك، جرب تمرير الكائن بأكمله.

##Example

Before
int low = daysTempRange.getLow();
int high = daysTempRange.getHigh();
boolean withinPlan = plan.withinRange(low, high);
After
boolean withinPlan = plan.withinRange(daysTempRange);

##Why Refactor

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

بعد تطبيق تقنية إعادة الهيكلة هذه، سيتم تخزين الكود الخاص بجلب جميع البيانات اللازمة في مكان واحد، وهو التابع نفسه.

##Benefits

  • بدلاً من خليط من المعاملات، ترى كائناً واحداً باسم مفهوم.

  • إذا كان التابع بحاجة إلى مزيد من البيانات من الكائن، فلن تحتاج إلى إعادة كتابة جميع الأماكن التي يُستخدم فيها التابع، بل داخل التابع نفسه فقط.

##How to Refactor

  1. أنشئ معاملاً في التابع للكائن الذي يمكنك الحصول منه على القيم اللازمة.

  2. ابدأ الآن في إزالة المعاملات القديمة من التابع واحداً تلو الآخر، واستبدلها باستدعاءات للتوابع ذات الصلة في كائن المعامل. واختبر البرنامج بعد استبدال كل معامل.

  3. احذف كود جلب البيانات (Getter) من كائن المعامل الذي كان يسبق استدعاء التابع.