Skip to Sidebar Skip to Content
اقرأ-تك اقرأ-تك
ضيفنا الكريم

  • قائمة القراءة
  • تسجيل الدخول
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©

Working With Feedbacks: Legacy Code #02

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • •
  • 27 Jun, 2024
  • •
  • 2 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email
Working With Feedbacks: Legacy Code #02
Working With Feedbacks: Legacy Code #02
  • Refactoring
  • Programming Language
  • Clean Code

المقدمة

التغييرات اللي بتتم في أي نظام ممكن تتم بطريقتين أساسيتين , ممكن نقول عليهم Edit and Pray أو Cover and Modify .. ولسوء الحظ الـ Edit and Pray هي نوعا ما الـ Standard , طب ايه هم الطريقتين دول , ده اللي هنتكلم عنه في الـ Chapter ده بشكل أساسي ..


Edit and Pray

الطريقة الأولى اللي هي Edit and Pray بكل بساطة معناها , ان قبل ما بتعمل تغييرات في الـ System بتعمل خطة كويسة بعناية للتغييرات دي وبتتأكد انك فهمت الـ Code كويس اللي محتاج تغير وتعدل فيه , وبتبدأ بعد كده تعمل التغييرات بتاعتك.

ولما بتخلص، بتدعي ربنا ان ما يكونش فيه مشاكل وانت بتراقب التغييرات بتاعتك والسلوك بتاعها بقى عامل ازاي .. وبالتأكيد بتاخد وقت اضافي لانك بتتأكد انك اللي عملته صح وتم بشكل مظبوط.

وبالتأكيد لو جينا عملنا اسقاط للمثال اللي قولناه على الجراح , فبالتاكيد مش هنحب اننا نختار الجراح اللي يعملنا العملية انه يكون شغال بسكينة زبدة بدل المشرط

ونقول ان معلش اصل هو بيشتغل بعناية , فالعناية لوحدها في الشغل مش هتكون كفاية لو ما استعملناش الـ Tools والـ Techniques الصح.


Cover and Modify

اما بالنسبة للطريقة التانية اللي هي Cover and Modify , فهي طريقة مختلفة لعمل التغييرات , والفكرة هنا بتكمن انه ممكن نشتغل بشكل آمن عادي جدًا واحنا بنغير في الـ Software.

فعملية الـ Covering في الـ Software بكل تاكيد معناها اننا نعمل Cover ليه بالـ Tests , فلو احنا عندنا مجموعة من الـ Tests الكويسة اللي بتحيط بالـ Code اللي عاوزين نغيره او نعدل فيه , ممكن بكل تأكيد وبسرعة جدًا نعمل التغييرات اللي عاوزينها وكمان نكتشف تأثيرها بالايجاب والسلب بسرعة , مع العلم اننا برضو لسه بنعمل ده بعناية ولكن هنا الفرق ان بيجيلنا Feedback.

فلو عملنا التغيير وكان كويس هنلاقي ان الـ Tests شغالة كويسة , ولكن لو فيه Test واحدة ما ادتش نفس النتيجة اذن هنعرف من الـ Feedback ده ان فيه مشكلة.

تعالوا نشوف مع بعض المثال ده : وليكن احنا عاوزين نعمل تغيير في Function طويلة جدا ومعقدة , ومن حسن الحظ كان فيه Unit Tests موجودة , وآخر ناس لمست الـ Function دي كانوا كاتبين مجموعة من الـ Tests وليكن 20 Unit Test واهتموا بيها جدًا.

لما بنيجي نشغلهم بنلاقي ان هم كلهم بيعملوا Pass وبالتالي بنبدأ نشوف الـ Unit Tests دي ونفهم السلوك بتاع الـ Function دي .. ولما بيجي الوقت اننا نعمل التغيير بتاعنا بندرك وقتها ان الموضوع نوعا ما صعب , وده لان الـ Code مش واضح.


تقدروا دلوقتي تشتركوا في النشرة الأسبوعية لاقرأ-تِك بشكل مجاني تمامًا عشان يجيلكوا كل جديد بشكل أسبوعي فيما يخص مواضيع متنوعة وبشروحات بسيطة وسهلة وبجودة عالية 🚀

النشرة هيكون ليها شكل جديد ومختلف عن شكلها القديم وهنحاول انها تكون مميزة ومختلفة وخليط بين المحتوى الأساسي اللي بينزل ومفاجآت تانية كتير 🎉

Eqraatech Newsletter | Eqraatech - اقرأ-تِك | Substack
محتوى تقني متميز في مختلف مجالات هندسة البرمجيات باللغة العربية عن طريق تبسيط المفاهيم البرمجية المعقدة بشكل سلس وباستخدام صور توضيحية مذهلة. Click to read Eqraatech Newsletter, a Substack publication with hundreds of subscribers.
SubstackEqraatech - اقرأ-تِك

ومحتاجين نفهمه أكتر وبشكل أفضل قبل ما نعمل أي تعديل او تغيير عليه, وده متوقع لان الـ Unit Tests طبيعي متبقاش مغطية تفاصيل التفاصيل , بس احنا برضو محتاجين نفهم الـ Code كويس اوي بحيث يكون عندنا ثقة بالتغييرات اللي هنعملها ..

وبرضو محتاجين اننا ما نخليش أي حد بعدنا يجي يتعامل مع الـ Code يقع في نفس المشكلة اللي احنا واقعين فيها دلوقتي , ولا حتى احنا بنفسنا بعدين لان ده هيضيع وقتنا ووقت أي حد تاني هيجي يغير او يعدل في الجزء ده.

طب نعمل ايه ؟ بنبدأ هنا نعمل Refactor للـ Code واحدة واحدة , بنبدأ نعمل مثلا Extract لبعض الـ Methods وننقل بعض الـ Conditional Logic وبعد كل تغيير طفيف بنروح نعمل Run للـ Unit Tests عشان نتأكد اننا ماشيين مظبوط.

ولما بنخلص Refactoring , بيكون الـ Code وقتها أفضل كتير و Cleaner وبنكون فهمنا هو بيعمل ايه , فبالتالي وقتها اما نيجي نعمل تغيير بنكون واثقين بنسبة كبيرة من التغييرات بتاعتنا , وبرضو بنزود Unit Tests عشان نتاكد ان السلوك بتاعنا شغال مظبوط بالإضافة لاننا بنعرف من الـ Unit Tests القديمة اذا كنا غيرنا في السلوك القديم ولا لا .. وبالتالي هنا موضوع الـ Feedback اللي بيجيلنا بيكون مهم جدًا.


Unit Tests

هذا المقال مخصص للأعضاء المنتسبين لخطط الاشتراك المدفوعة فقط

اشترك الآن وتصفح كافة المقالات المميزة واستمتع بمحتوى حصري وابق على اطلاع دائم بالتحديثات المستمرة.

اشترك الآن 🚀

هل لديك حساب؟ تسجيل الدخول

في هذا المقال
اشترك الآن واكمل قراءة المقال
قناة اقرأ-تِك على التليجرام قناة اقرأ-تِك على التليجرام

اشترك الآن بنشرة اقرأ‑تِك الأسبوعية

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

مقالات ذات صلة

  • Deep Dive into Code Quality - Beyond Bugs 5 min read

    Deep Dive into Code Quality - Beyond Bugs

    Rowan Ibrahem Rowan Ibrahem • 1 Sep, 2024
    Rowan Ibrahem Rowan Ibrahem
    Flutter Developer
    • Website
  • The Seam Model: Legacy Code #04 3 min read

    The Seam Model: Legacy Code #04

    Mahmoud Youssef Mahmoud Youssef • 27 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Sensing and Separation: Legacy Code #03 2 min read

    Sensing and Separation: Legacy Code #03

    Mahmoud Youssef Mahmoud Youssef • 27 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Changing Software: Legacy Code #01 2 min read

    Changing Software: Legacy Code #01

    Mahmoud Youssef Mahmoud Youssef • 26 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Observer Design Pattern 3 min read

    Observer Design Pattern

    Mahmoud Youssef Mahmoud Youssef • 22 Jun, 2024
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Full Guide Into Optionals in Java 4 min read

    Full Guide Into Optionals in Java

    Mahmoud Youssef Mahmoud Youssef • 16 Dec, 2023
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Refactoring : Improving The Design of Existing Code Book Recommendation

    Refactoring : Improving The Design of Existing Code Book Recommendation

    Mahmoud Youssef Mahmoud Youssef • 17 Oct, 2023
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Deep Dive Into Code Review Checklist 1 min read

    Deep Dive Into Code Review Checklist

    Hanan Shaban Hanan Shaban • 9 Jul, 2023
    Hanan Shaban Hanan Shaban
    Program Manager
    • Website
  • Refactoring: Code Smells – Large Class 3 min read

    Refactoring: Code Smells – Large Class

    Mahmoud Youssef Mahmoud Youssef • 18 May, 2023
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • Refactoring: Code Smells - Long Method 3 min read

    Refactoring: Code Smells - Long Method

    Mahmoud Youssef Mahmoud Youssef • 4 May, 2023
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
اقرأ-تك اقرأ-تك
  • الرئيسية
  • المقالات
  • خطط الاشتراك
  • - اصدارتنا
  • ورقة وقلم
  • مدونات فطين
  • شنطة مبرمج
  • النشرة الأسبوعية
  • كنوز
  • - تعرف علينا
  • من نحن
  • الشراكات
  • كتاب المحتوى
  • اكتب معنا
  • تواصل معنا
  • - بنود الخدمة
  • سياسة الخصوصية
  • الشروط والأحكام
الوسوم
  • Backend
  • Distributed Systems
  • System Design
  • Databases
  • LinkedIn
  • X
  • Facebook
  • Telegram
  • GitHub
جميع الحقوق محفوظة لمنصة اقرأ-تِك 2024©