ConstructiCat Logo
CodeBust.
Browse section ▾

استبدال الخوارزمية.

Problem

إذن تريد استبدال خوارزمية موجودة بأخرى جديدة؟

Solution

استبدل جسم الدالة التي تنفذ الخوارزمية بالخوارزمية الجديدة.

##Example

Before
String foundPerson(String[] people){
  for (int i = 0; i < people.length; i++) {
    if (people[i].equals("Don")){
      return "Don";
    }
    if (people[i].equals("John")){
      return "John";
    }
    if (people[i].equals("Kent")){
      return "Kent";
    }
  }
  return "";
}
After
String foundPerson(String[] people){
  List candidates =
    Arrays.asList(new String[] {"Don", "John", "Kent"});
  for (int i=0; i < people.length; i++) {
    if (candidates.contains(people[i])) {
      return people[i];
    }
  }
  return "";
}

##Why Refactor

  1. إعادة الهيكلة التدريجية ليست الطريقة الوحيدة لتحسين البرنامج. في بعض الأحيان تكون الدالة مزدحمة للغاية بالمشكلات لدرجة أنه يكون من الأسهل هدم الدالة والبدء من جديد. وربما وجدت خوارزمية أبسط وأكثر كفاءة بكثير. إذا كان هذا هو الحال، فيجب عليك ببساطة استبدال الخوارزمية القديمة بالخوارزمية الجديدة.

  2. مع مرور الوقت، قد يتم دمج خوارزميتك في مكتبة أو إطار عمل معروف وتريد التخلص من تنفيذك المستقل لتبسيط الصيانة.

  3. قد تتغير متطلبات برنامجك بشكل كبير لدرجة أنه لا يمكن إنقاذ خوارزميتك الحالية لإنجاز المهمة.

##How to Refactor

  1. تأكد من تبسيط الخوارزمية الحالية قدر الإمكان. انقل الكود غير المهم إلى دوال أخرى باستخدام تقنية استخلاص الدالة (Extract Method). كلما قل عدد الأجزاء المتحركة في خوارزميتك، كان من الأسهل استبدالها.

  2. أنشئ خوارزميتك الجديدة في دالة جديدة. استبدل الخوارزمية القديمة بالجديدة وابدأ في اختبار البرنامج.

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

  4. عند اكتمال جميع الاختبارات بنجاح، احذف الخوارزمية القديمة نهائيًا!