شعار ConstructiCat
CodeBust.
تصفح القسم ▾

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

المشكلة

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

الحل

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

##مثال

قبل
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 "";
}
بعد
String foundPerson(String[] people){
  List<String> candidates =
    Arrays.asList("Don", "John", "Kent");
  for (int i=0; i < people.length; i++) {
    if (candidates.contains(people[i])) {
      return people[i];
    }
  }
  return "";
}

##لماذا نعيد الهيكلة

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

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

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

##كيفية إعادة الهيكلة

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

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

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

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