كيفية ضبط التعليمات البرمجية الخاصة بك بإعادة بيع ديون (بما في ذلك PHP أمثلة)

نشرت: 2021-06-22

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

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

إعادة هيكلة الكود

مساوئ التعليمات البرمجية غير النظيفة

إن توسيع حجم الكود المصدري عن طريق إضافة برامج جديدة إليه دون إعادة بناء ديون لفترة طويلة يجعل الكود فوضويًا وغير نظيف. إنه يجعل الصيانة والمزيد من التطوير في المشروع أمرًا صعبًا للغاية. تأتي التعليمات البرمجية غير النظيفة مع الكثير من العيوب:

  1. يزيد من تكلفة صيانة المشروع.
  2. تستغرق إضافة ميزة جديدة الكثير من الوقت وأحيانًا يصبح من المستحيل إضافتها.
  3. يبطئ إدخال أشخاص جدد إلى المشروع.
  4. يحتوي على رمز مكرر.
  5. لا يجتاز جميع الاختبارات.

هناك العديد من العيوب الأخرى ، ولكن هذه المشاكل تكلف المنظمة الكثير من المال والوقت.

مزايا الكود النظيف

الكود النظيف والمنظم له مميزاته الخاصة:

  1. لا يحتوي على رمز مكرر.
  2. اجتاز جميع الاختبارات.
  3. يجعل الكود أكثر قابلية للقراءة وأسهل في الفهم.
  4. إنه يجعل الكود أسهل في الصيانة وأقل تكلفة.

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

عملية إعادة بيع ديون

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

متى تعيد البناء

يجب إجراء إعادة الهيكلة في الحالات التالية:

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

التعامل مع روائح الكود

يشار أحيانًا إلى المشكلات الموجودة في الكود برائحة الكود. هذه هي المشاكل التي تم تناولها أثناء إعادة الهيكلة. من الأسهل العثور عليها وإصلاحها.

فمثلا:

  • طرق وفصول كبيرة يصعب العمل بها.
  • الاستخدام غير الكامل أو غير الصحيح لمفهوم البرمجة الشيئية.
  • رمز يجعل من الصعب إضافة أي تغييرات.
  • كود مكرر ومهمل في المشروع.
  • رمز شديد الاقتران.

تقنيات إعادة البناء

تقنيات إعادة البناء هي الخطوات المتخذة لإعادة بناء الكود. بعض تقنيات إعادة البناء هي:

1. طريقة الاستخراج

// مشكلة

 function printInvoice() { $this->printHeader(); // Print details. print("name: " . $this->name); print("amount " . $this->getPrice()); }

// المحلول

 function printInvoice() { $this->printBanner(); $this->printDetails($this->getPrice()); } function printDetails($price) { print("name: " . $this->name); print("amount " . $outstanding); }

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

2. استخراج متغير

// مشكلة

 if (($student->getMarksinMath() > 60) && ($student->getMarksInPhysics() > 60) && ($student->getMarksinChemistry() > 60) && $this->pass) { // do something }

// المحلول

 $mathResult = $student->getMarksinMath() > 60; $physicsResult = $student->getMarksinPhysics() > 60; $chemistryResult = $student->getMarksinChemistry() > 60; $hasPassed = $this->pass; if ($mathResult && $physicsResult && $chemistryResult && $hasPassed) { // do something }

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

3. الطريقة المضمنة

// مشكلة

 function printResult() { return ($this->getResult()) ? “Pass” : “Fail”; } function getResult() { return $this->totalMarks > 300; }

// المحلول

 function getRating() { return ($this->totalMarks > 300) ? “Pass” : “Fail”; }

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

4. مضمنة درجة الحرارة

// مشكلة

 $mathMark = $student->getMathResult(); return $mathMark > 60;

// المحلول

 return $student->getMathResult() > 60;

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

5. استبدال مجموعة مع الكائن

// مشكلة

 $row = []; $row[0] = "Virat Kohli"; $row[1] = 70;

// المحلول

 $row = new Player(); $row->setName("Virat Kohli"); $row->setNumberofCentury(70);

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

6. طريقة معلمة

// مشكلة

 function fivePercentRaise() { } function tenPercentRaise() { }

// المحلول

 function raise(percent) { }

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

7. استعلام منفصل عن المعدل

// مشكلة

 function getInterest() { $this->interestAmount = $this->principal * 10 / 100; return $this->interestAmount; }

// المحلول

 function setInterest() { $this->interestAmount = $this->principal * 10 / 100; } function getInterest() { return $this->interestAmount; }

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