تحويل التوابع إلى معاملات (Parameterize Method)

من موسوعة حسوب

المشكلة

تؤدي توابع متعددة أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.

الحل

تجميع هذه التوابع باستخدام معامل يُمرر القيمة الخاصة الضرورية.

مثال

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

يؤدي التابعان ()fivePercentRaise و ()tenPercentRaise الغرض ذاته باختلاف النسبة المئوية المراد زيادتها للموظف Employee:

يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.
يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.

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

تجميع التابعان السابقان في تابع واحد يدعى ()raise مع تمرير النسبة المئوية المتغيرة إليه:

يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.
يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.

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

إذا وُجِدَت توابع متشابهة، تكون الشيفرة مُكررة في الغالب، ومع كل العواقب التي تترتب على ذلك.

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

مساوئ تطبيق الحل

  • في بعض الأحيان، قد تذهب تقنية إعادة التصميم هذه لما هو أبعد بكثير، مما يؤدي إلى تابعٍ مشتركٍ طويلٍ ومعقد بدلًا من توابع متعددة أكثر بساطة.
  • يجب الحذر أيضًا عند نقل تنشيط/تعطيل وظيفة ما إلى معامل. يمكن أن يؤدي ذلك في نهاية المطاف إلى إنشاء عامل مشروط كبير والذي سيتعين معالجته عن طريق تبديل المعامل بتوابع صريحة.

آلية الحل

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

انظر أيضًا

مصادر