ConstructiCat Logo
CodeBust.
Browse section ▾

إدخال كائن المعاملات (Introduce Parameter Object).

Problem

تحتوي توابعك على مجموعة متكررة من المعاملات.

Solution

استبدل هذه المعاملات بكائن.

##Example

قبل
Introduce Parameter Object - Before
بعد
Introduce Parameter Object - After

##Why Refactor

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

##Benefits

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

  • تنشئ مجموعات المعاملات المتماثلة المنتشرة هنا وهناك نوعاً خاصاً بها من تكرار الكود: فبينما لا يتم استدعاء كود متماثل، يتم مصادفة مجموعات متطابقة من المعاملات والوسائط باستمرار.

##How to Refactor

  1. أنشئ فئة جديدة تمثل مجموعة المعاملات الخاصة بك. واجعل هذه الفئة غير قابلة للتغيير (Immutable).

  2. في التابع الذي تريد إعادة هيكلته، استخدم إضافة معامل (Add Parameter)، وهو المكان الذي سيتم تمرير كائن المعاملات إليه. وفي جميع استدعاءات التابع، مرر الكائن الذي تم إنشاؤه من معاملات التابع القديمة إلى هذا المعامل.

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

  4. عند الانتهاء، تحقق مما إذا كان هناك أي فائدة من نقل جزء من التابع (أو حتى التابع بأكمله أحياناً) إلى فئة كائن المعاملات. وإذا كان الأمر كذلك، فاستخدم نقل التابع (Move Method) أو استخراج التابع (Extract Method).