الفرق بين المراجعتين لصفحة: «Refactoring/rename method»
Khaled-yassin (نقاش | مساهمات) أنشأ الصفحة ب'<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>، ...إلخ. | ||
== آلية الحل == | == آلية الحل == | ||
# تحقق من إذا كان التابع مُعرَّف في | # تحقق من إذا كان التابع مُعرَّف في الصنف الأعلى أو صنفٍ فرعي. فإذا كان الأمر كذلك، يجب تكرار كل الخطوات في هذه الأصناف أيضًا. | ||
# التابع التالي مهم للحفاظ على عمل البرنامج أثناء عملية إعادة التصميم. أنشئ تابعًا جديدًا باسم جديد. وانسخ شيفرة التابع القديم إليه. ثم احذف كل الشيفرة البرمجية من التابع القديم، وأدخل بدلًا منه استدعاءً للتابع الجديد. | # التابع التالي مهم للحفاظ على عمل البرنامج أثناء عملية إعادة التصميم. أنشئ تابعًا جديدًا باسم جديد. وانسخ شيفرة التابع القديم إليه. ثم احذف كل الشيفرة البرمجية من التابع القديم، وأدخل بدلًا منه استدعاءً للتابع الجديد. | ||
# ابحث عن كافة المراجع إلى التابع القديم واستبدلها بمراجع إلى التابع الجديد. | # ابحث عن كافة المراجع إلى التابع القديم واستبدلها بمراجع إلى التابع الجديد. | ||
# احذف التابع القديم. إذا كان التابع القديم | # احذف التابع القديم. إذا كان التابع القديم جزءًا من واجهة عامة، فلا تُجري هذه الخطوة. وبدلًا من ذلك، ضع علامة "مُهمَل" على التابع القديم. | ||
== انظر أيضًا == | == انظر أيضًا == | ||
سطر 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()
، ...إلخ.
آلية الحل
- تحقق من إذا كان التابع مُعرَّف في الصنف الأعلى أو صنفٍ فرعي. فإذا كان الأمر كذلك، يجب تكرار كل الخطوات في هذه الأصناف أيضًا.
- التابع التالي مهم للحفاظ على عمل البرنامج أثناء عملية إعادة التصميم. أنشئ تابعًا جديدًا باسم جديد. وانسخ شيفرة التابع القديم إليه. ثم احذف كل الشيفرة البرمجية من التابع القديم، وأدخل بدلًا منه استدعاءً للتابع الجديد.
- ابحث عن كافة المراجع إلى التابع القديم واستبدلها بمراجع إلى التابع الجديد.
- احذف التابع القديم. إذا كان التابع القديم جزءًا من واجهة عامة، فلا تُجري هذه الخطوة. وبدلًا من ذلك، ضع علامة "مُهمَل" على التابع القديم.
انظر أيضًا
- إضافة معامل (Add Parameter).
- حذف المعاملات (Remove Parameter).
- الأصناف البديلة (alternative) ذات الواجهات (interfaces) المختلفة.
- التعليقات (Comments).