اذهب إلى المحتوى

السؤال

Recommended Posts

  • 1
نشر

هي عملية تغيير بنية الشيفرة المصدرية بدون أن يتغير عملها لكي تحقق التالي:

  • سهولة القراءة، كتغيير اسماء المتحولات والتوابع الى اسماء واضحة معبرة
  • معنى واضح وفهم أكثر، عبر اختيار اسماء تعبر عن معنى ووظيفة كل متحول أو تابع أو صف
  • تقليل التكرار، حيث نحاول جمع العمليات المكررة بمكان واحدة ونسخة واحدة نستعملها دوما، لتخفيف وقت الصيانة لاحق
  • السرعة، حيث نحسن أداء الخوارزميات المستخدمة لرفع الأداء

مثال

function a(x, s) {
	return x + s;
}

المثال السابق لتابع لا يدل أبدا على وظيفته ولا تعبر المعاملات الممرة له عن هويتها، نقوم بإعادة كتابة التابع السابق كالتالي   

function sum(number1, number2) {
	return number1 + number2;
}

 

  • 1
نشر

عملية إعادة التصنيع (refactoring) يُقصد بها إعادة كتابة الشفرة البرمجية أو إعادة كتابة جزءاً من الشفرة البرمجية بغرض:

  • تحسين كفائة الشفرة البرمجية من حيث الأداء
  • تحسين الكفاءة من حيث جعلها أسهل فهماً
  • التأكد من سهولة تطوير الشفرة البرمجية وتمديدها extend

وبوجه عام فإن غالبا الشفرة البرمجية التي نحتاج أن نقوم بإعادة تصنيعها (refactoring) تكون هي الشفرة التي ﻻ تراعي المبادئ الخمسة SOLID Principles والتي تنص على التالي

  • مبدأ المسؤلية الواحدة: وهو مبدأ ينص على أن لكل class مسؤلية واحدة , وكل دالة فيه يكون لها وظيفة واحدة فقط ﻻ أكثر

  • مبدأ المفتوح - المغلق: ينص هذا المبدأ على أن أي نظام يكون مفتوح للتمدد مغلق للتعديل

  • مبدأ ليسكوف للإستبدال: إذا كان النظام يستخدم class معين فإنه يجب أن يكون قادراً على إستخدام أي class مشتق منه 

  • مبدأ فصل الواجهات (interface Segregation) : ﻻ يجب أن تحتوي الواجهات interfaces على دوال قد ﻻ يحتاج المستخدم لإستخدامها, حيث يجب إختيار الدوال في الواجهات بعناية

  • مبدأ عكس الإعتمادية (dependency inversion): ينص على أن classes المستويات العليا ﻻ يجب أن تعتمد على classes المستويات الدنيا , فمثلاً إن كان لدينا class مُسمى سيارة و class أخر مُسمى محرك , فﻻ يجب أن تعتمد السيارة على المحرك

وبالأسفل بعض المقالات المفيدة في فهم هذا الموضوع بشكل أفضل

 

انضم إلى النقاش

يمكنك أن تنشر الآن وتسجل لاحقًا. إذا كان لديك حساب، فسجل الدخول الآن لتنشر باسم حسابك.

زائر
أجب على هذا السؤال...

×   لقد أضفت محتوى بخط أو تنسيق مختلف.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   جرى استعادة المحتوى السابق..   امسح المحرر

×   You cannot paste images directly. Upload or insert images from URL.

  • إعلانات

  • تابعنا على



×
×
  • أضف...