شعار ConstructiCat
CodeBust.
تصفح القسم ▾

قائمة المعاملات الطويلة.

أكثر من ثلاثة أو أربعة معاملات في الدالة.

##العلامات والأعراض

أكثر من ثلاثة أو أربعة معاملات في الدالة.

void book(String from, String to, String date, int adults, int children,
         String cabin, boolean flex, String meal) {}

##أسباب المشكلة

قد تنشأ قائمة طويلة من المعاملات بعد دمج عدة أنواع من الخوارزميات في دالة واحدة. وقد تُنشأ هذه القائمة الطويلة للتحكم في الخوارزمية التي ستُنفَّذ وكيفية تنفيذها.

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

يصعب فهم مثل هذه القوائم، التي تصبح متناقضة وصعبة الاستخدام كلما طالت. بدلاً من قائمة طويلة من المعاملات، يمكن للدالة استخدام بيانات كائنها الخاص. إذا لم يحتوِ الكائن الحالي على جميع البيانات اللازمة، يمكن تمرير كائن آخر (سيحصل على البيانات اللازمة) كمعامل للدالة.

##المعالجة

##الفوائد

  • كود أكثر وضوحاً وأقصر.

  • قد تكشف إعادة الهيكلة عن كود مكرر لم يُلاحَظ من قبل.