الفرق بين المراجعتين ل"Refactoring/parameterize method"

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
ط (مراجعة وتدقيق.)
سطر 11: سطر 11:
  
 
==== قبل إعادة التصميم ====
 
==== قبل إعادة التصميم ====
[[ملف:Parameterize Method - Before.png|بديل=يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.|بدون|تصغير|يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.]]
+
يؤدي التابعان <code>()fivePercentRaise</code> و <code>()tenPercentRaise</code> الغرض ذاته باختلاف النسبة المئوية المراد زيادتها للموظف <code>Employee</code>:[[ملف:Parameterize Method - Before.png|بديل=يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.|بدون|تصغير|يؤدي التابعان أعمالًا مماثلة تختلف فقط من حيث قيمها الداخلية أو أرقامها أو عملياتها.]]
  
 
==== بعد إعادة التصميم ====
 
==== بعد إعادة التصميم ====
[[ملف:Parameterize Method - After.png|بديل=يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.|بدون|تصغير|يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.]]
+
تجميع التابعان السابقان في تابع واحد يدعى <code>()raise</code> مع تمرير النسبة المئوية المتغيرة إليه:[[ملف:Parameterize Method - After.png|بديل=يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.|بدون|تصغير|يجمع التابعين باستخدام معامل يُمرر القيمة الخاصة الضرورية.]]
  
 
== لم إعادة التصميم؟ ==
 
== لم إعادة التصميم؟ ==
سطر 22: سطر 22:
  
 
== مساوئ تطبيق الحل ==
 
== مساوئ تطبيق الحل ==
* في بعض الأحيان قد تذهب تقنية إعادة التصميم هذه لما هو أبعد بكثير، مما يؤدي إلى تابعٍ مشتركٍ طويلٍ ومعقد بدلًا من توابع متعددة أكثر بساطة.
+
* في بعض الأحيان، قد تذهب تقنية إعادة التصميم هذه لما هو أبعد بكثير، مما يؤدي إلى تابعٍ مشتركٍ طويلٍ ومعقد بدلًا من توابع متعددة أكثر بساطة.
* يجب الحذر أيضًا عند نقل تنشيط/تعطيل وظيفة ما إلى معامل.يمكن أن يؤدي ذلك في نهاية المطاف إلى إنشاء عامل مشروط كبير والذي سيتعين معالجته عن طريق [[Refactoring/replace parameter with explicit methods|تبديل المعامل بتوابع صريحة]].
+
* يجب الحذر أيضًا عند نقل تنشيط/تعطيل وظيفة ما إلى معامل. يمكن أن يؤدي ذلك في نهاية المطاف إلى إنشاء عامل مشروط كبير والذي سيتعين معالجته عن طريق [[Refactoring/replace parameter with explicit methods|تبديل المعامل بتوابع صريحة]].
  
 
== آلية الحل ==
 
== آلية الحل ==
 
# إنشاء تابع جديد مع معامل ونقله إلى الشيفرة البرمجية نفسها لكافة الأصناف عن طريق تطبيق [[Refactoring/extract method|استخراج التابع]]. لاحظ أنه في الواقع يتشابه جزء معين من التوابع في بعض الأحيان. وفي هذه الحالة، تكون إعادة التصميم عبارة عن استخراج الجزء المتشابه إلى تابعٍ جديد.
 
# إنشاء تابع جديد مع معامل ونقله إلى الشيفرة البرمجية نفسها لكافة الأصناف عن طريق تطبيق [[Refactoring/extract method|استخراج التابع]]. لاحظ أنه في الواقع يتشابه جزء معين من التوابع في بعض الأحيان. وفي هذه الحالة، تكون إعادة التصميم عبارة عن استخراج الجزء المتشابه إلى تابعٍ جديد.
 
# بدِّل القيمة الخاصة/المختلفة بمعامل داخل شيفرة التابع الجديد.
 
# بدِّل القيمة الخاصة/المختلفة بمعامل داخل شيفرة التابع الجديد.
# ابحث عن الأماكن التي يُستدعَى فيها كل تابع قديم، ثم استبدل هذه الاستدعاءات باستدعاءات إلى التابع الجديد الذي يتضمن معاملًا. ثم احذف التابع القديم.
+
# ابحث عن الأماكن التي يُستدعَى فيها كل تابع قديم، ثم استبدل هذه الاستدعاءات باستدعاءات إلى التابع الجديد الذي يتضمن معاملًا. احذف بعد ذلك التابع القديم.
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
سطر 40: سطر 40:
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring Techniques]]
 
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Simplifying Method Calls]]
+
[[تصنيف:Refactoring Simplifying Method Calls]]

مراجعة 08:37، 26 فبراير 2019

المشكلة

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

الحل

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

مثال

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

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

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

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

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

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

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

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

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

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

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

آلية الحل

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

انظر أيضًا

مصادر