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

من موسوعة حسوب
اذهب إلى التنقل اذهب إلى البحث
(أنشأ الصفحة ب'<noinclude>{{DISPLAYTITLE: إعادة تسمية التوابع (Rename Method)}}</noinclude> == المشكلة == لا يفسر اسم التابع ما يقوم به....')
 
ط (مراجعة وتدقيق)
 
سطر 1: سطر 1:
 
<noinclude>{{DISPLAYTITLE: إعادة تسمية التوابع (Rename Method)}}</noinclude>
 
<noinclude>{{DISPLAYTITLE: إعادة تسمية التوابع (Rename Method)}}</noinclude>
 
 
== المشكلة ==
 
== المشكلة ==
لا يفسر اسم التابع ما يقوم به.
+
لا يعبِّر اسم التابع عن ما يقوم به.
  
 
== الحل ==
 
== الحل ==
سطر 10: سطر 9:
  
 
==== قبل إعادة التصميم ====
 
==== قبل إعادة التصميم ====
لا يفسر اسم التابع ما يقوم به.
+
لا يفسر اسم التابع <code>()getsnm</code> في الصنف <code>Customer</code> ما يقوم به.
 
[[ملف:Rename Method - Before.png|بديل=لا يفسر اسم التابع ما يقوم به.|بدون|تصغير|لا يفسر اسم التابع ما يقوم به.]]
 
[[ملف:Rename Method - Before.png|بديل=لا يفسر اسم التابع ما يقوم به.|بدون|تصغير|لا يفسر اسم التابع ما يقوم به.]]
  
 
==== بعد إعادة التصميم ====
 
==== بعد إعادة التصميم ====
يفسر اسم التابع ما يقوم به.
+
إعادة تسمية التابع <code>()getsnm</code> إلى <code>()getSecondName</code> الذي يصف ما يقوم به.
 
[[ملف:Rename Method - After.png|بديل=يفسر اسم التابع ما يقوم به.|بدون|تصغير|يفسر اسم التابع ما يقوم به.]]
 
[[ملف:Rename Method - After.png|بديل=يفسر اسم التابع ما يقوم به.|بدون|تصغير|يفسر اسم التابع ما يقوم به.]]
  
سطر 23: سطر 22:
  
 
== فوائد تطبيق الحل ==
 
== فوائد تطبيق الحل ==
* قابلية قراءة الشفرة البرمجية. حاول أن تعطي التابع الجديد اسمًا يعكس ما يفعله. شيء مثل <code>createOrder()</code> ، <code>renderCustomerInfo()</code>‎ ، الخ.
+
* قابلية قراءة الشفرة البرمجية. حاول أن تعطي التابع الجديد اسمًا يعكس ما يفعله شيء مثل <code>createOrder()</code>، و <code>renderCustomerInfo()</code>‎، ...إلخ.
  
 
== آلية الحل ==
 
== آلية الحل ==
# تحقق من إذا كان التابع مُعرَّف في صنفٍ فائق أو صنفٍ فرعي. فإذا كان الأمر كذلك، يجب تكرار كل الخطوات في هذه الأصناف أيضًا.
+
# تحقق من إذا كان التابع مُعرَّف في الصنف الأعلى أو صنفٍ فرعي. فإذا كان الأمر كذلك، يجب تكرار كل الخطوات في هذه الأصناف أيضًا.
 
# التابع التالي مهم للحفاظ على عمل البرنامج أثناء عملية إعادة التصميم. أنشئ تابعًا جديدًا باسم جديد. وانسخ شيفرة التابع القديم إليه. ثم احذف كل الشيفرة البرمجية من التابع القديم، وأدخل بدلًا منه استدعاءً للتابع الجديد.
 
# التابع التالي مهم للحفاظ على عمل البرنامج أثناء عملية إعادة التصميم. أنشئ تابعًا جديدًا باسم جديد. وانسخ شيفرة التابع القديم إليه. ثم احذف كل الشيفرة البرمجية من التابع القديم، وأدخل بدلًا منه استدعاءً للتابع الجديد.
 
# ابحث عن كافة المراجع إلى التابع القديم واستبدلها بمراجع إلى التابع الجديد.
 
# ابحث عن كافة المراجع إلى التابع القديم واستبدلها بمراجع إلى التابع الجديد.
# احذف التابع القديم. إذا كان التابع القديم جزء من واجهة عامة، لا تُجري هذه الخطوة. وبدلًا من ذلك، ضع علامة "مُهمَل" على التابع القديم.
+
# احذف التابع القديم. إذا كان التابع القديم جزءًا من واجهة عامة، فلا تُجري هذه الخطوة. وبدلًا من ذلك، ضع علامة "مُهمَل" على التابع القديم.
  
 
== انظر أيضًا ==
 
== انظر أيضًا ==
سطر 41: سطر 40:
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring]]
 
[[تصنيف:Refactoring Techniques]]
 
[[تصنيف:Refactoring Techniques]]
[[تصنيف:Simplifying Method Calls]]
+
[[تصنيف:Refactoring Simplifying Method Calls]]

المراجعة الحالية بتاريخ 13:39، 25 فبراير 2019

المشكلة

لا يعبِّر اسم التابع عن ما يقوم به.

الحل

إعادة تسمية التابع.

مثال

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

لا يفسر اسم التابع ()getsnm في الصنف Customer ما يقوم به.

لا يفسر اسم التابع ما يقوم به.
لا يفسر اسم التابع ما يقوم به.

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

إعادة تسمية التابع ()getsnm إلى ()getSecondName الذي يصف ما يقوم به.

يفسر اسم التابع ما يقوم به.
يفسر اسم التابع ما يقوم به.

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

ربما كانت تسمية تابعٍ ما سيئة من البداية - على سبيل المثال، أنشأ شخصٌ ما التابع في عجلة ولم يهتم كفاية بتسميته بشكل جيد.

أو ربما سُميَ التابع بشكلٍ جيد في البداية ولكن مع تطور وظيفته، أصبح اسم التابع لا يصفه بشكلٍ جيد.

فوائد تطبيق الحل

  • قابلية قراءة الشفرة البرمجية. حاول أن تعطي التابع الجديد اسمًا يعكس ما يفعله شيء مثل createOrder()، و renderCustomerInfo()‎، ...إلخ.

آلية الحل

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

انظر أيضًا

مصادر