معنى Code Refactoring في البرمجة

قد تكون سبق وأن قرأت او سمعت عن مصطلح Code Refactoring في أحد المقالات او الفيديوهات على اليوتيوب، ولكن ما معنى Code Refactoring وما الفائدة منه؟

المقصود بعملية الـ Code Refactoring هي تحسين الكود من غير تغيير سلوك أو وظيفة البرنامج، وهي من الأمور المستمرة اثناء او بعد بناء البرنامج. بعض الأمثلة على الـ Refactoring:

  • إعادة تسمية المتغيرات
  • نقل بعض الاكواد إلى دوال منفصلة
  • إعادة هيكلة بعض الأجزاء.

بعد أن عرفت معنى Code Refactoring ، لنأخذ مثال بسيط حتى تتضح الصورة بشكل افضل. لنفترض أنك أثناء عملك على أحد المشاريع، لاحظت بأنك تحتاج إلى إعادة استخدام احد الاكواد المكتوبة سابقة (رسالة ترحيب للمستخدم مثلا). الطريقة الخاطئة التي قد يتبعها البعض هي نسخ الكود ولصقه مرة اخرى، رغم أن هذه الطريقة تؤدي الغرض إلا أنها كما ذكرت سابقا خاطئة، للأسباب التالية:

  • تكرار الكود سيزيد من حجم البرنامج
  • اذا احتجت لتحسين او التعديل على الكود ستحتاج لتحسين جميع النسخ الموجودة
  • تعقيد عملية اختبار الكود
  • النقاط السابقة تكفي 😄️

لمعرفة المزيد، قم بالبحث عن Code Duplication ومشاكله وتأثيره على الـ Code Maintainability

 أما الطريقة الصحيحة فهي أن تقوم باستخراج الكود وتحويله إلى دالة منفصلة، سواء اكانت بنفس الـ Class أو في Class آخر إذا كانت الدالة مطلوب استخدامها من أكثر من CLass. حتى هذه الخطوة من الممكن ان تقوم بعمل Refactoring لها في المستقبل أكثر من مرة إذا تغير الهيكل الخاص بالبرنامج. أغلب الـ IDEs تحتوي على أدوات للـ Refactoring.

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

مثال على استخراج دالة ببرنامج Eclipse باستخدام لغة البرمجة C++
مثال على استخراج دالة ببرنامج Eclipse باستخدام لغة البرمجة C++

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

أحد الطرق التي بإمكانك اتباعها لتحسين الكود بعد الانتهاء من المشروع، هي العودة للأكواد بعد اسبوع او اكثر، وقراءة الكود مرة أخرى بـ Fresh eyes، أو الاستعانة بشخص آخر لتقييم الكود.

إذا أعجبتك هذه المقالة القصيرة، تفضل بقراءة ما هي أدوات الـ Code Profiling وكيف يمكن استخدامها؟