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

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

Refactoring: Code Smells – Large Class

  • Mahmoud Youssef by Mahmoud Youssef
    Mahmoud Youssef Mahmoud Youssef
    CEO & Founder
    • X
    • Facebook
    • Website
  • •
  • 18 May, 2023
  • •
  • 3 min read
  • Share on X
  • Share on Facebook
  • Share on LinkedIn
  • Share on Pinterest
  • Email
Refactoring: Code Smells – Large Class
Refactoring: Code Smells – Large Class
  • Refactoring
  • Clean Code

قبل أن نتطرق إلى إستكمال الحديث في سلسلة الـ Refactoring .. قمنا بعمل Github Repo تحتوي على كل الأمثلة التي نقوم بشرحها حتى يسهل عليك فهمها والتطبيق عليها  .. سنترك رابط الـ Github Repo في آخر المقال .. فقم بتجربة هذه الأمثلة باستعمال لغة البرمجة التي تفضلها .. فهذه الأمثلة مكتوبة بلغة الـ Java.

تحدثنا سابقًا عن أول نوع من الـ Code Smells وهو الـ Bloaters ويعني الانتفاخ .. وهذا النوع ينقسم إلى أكثر من نوع  تحدثنا عن أحدهم في المقال السابق وكانت عن الـLong Method وسنكمل حديثنا اليوم عن نوع  أخر وهي التعامل مع Large Class.

غالبًا ما تبدأ الـClass بكونها صغيرة ولكن مع الوقت ومع اضافة التغييرات واضافة ميزات جديدة  في التطبيق يزداد حجمها تدريجيًا إلى أن تصبح عملاقة ويصعب التعامل معها بشكل كبير مما يحد من إمكانية إضافة المزيد من التغييرات أو صيانة الـCode.

مثال للمشكلة ؟

في الـ Code Snippet رقم 1 يمكننا رؤية أن الـ Employee Class يحتوي على معلومات عامة عن كل موظف ولكن هل يمكنك معرفة أين المشكلة؟

// Before Refactoring -- code snippet 1
public class Employee {

    private String firstName;
    private String lastName;
    private String employeeId;
    private String department;
    private String email;
    private LocalDateTime dateOfBirth;
    private LocalDateTime hiringDate;

    private String country;
    private String city;
    private String street;
    private String postalCode;
    private String apartment;
    private String state;

    public String getFullAddress() {
        return "City: %s, State: %s, Country: %s, Street: %s, ApartmentNo: %s, PostalCode: %s"
                .formatted(city, state, country, street, apartment, postalCode);
    }
}

في الـ Code Snippet رقم 2 يمكننا رؤية أن الـ CardPaymentProcessor Class يحتوي على بعض البيانات المهمة الخاصة بكروت الإئتمان بالاضافة لطريقة عمل الـ processing لكل نوع من الكروت ..ولكن هل يمكنك معرفة أين المشكلة؟

// Before Refactoring -- Code Snippet 2
public class CardPaymentProcessor {

    private String visaCardNumber;
    private String visaCardHolder;
    private int visaCCN;
    private LocalDateTime visaExpirationDate;

    private String masterCardNumber;
    private String masterCardHolder;
    private int masterCCN;
    private LocalDateTime masterExpirationDate;

    private String maestroCardNumber;
    private String maestroCardHolder;
    private int maestroCCN;
    private LocalDateTime maestroExpirationDate;

    private String virtualCardNumber;
    private String virtualCardHolder;
    private int virtualCCN;
    private LocalDateTime virtualExpirationDate;

    public void processVisaCardPayment(){
        // logic
    }

    public void processMaterCardPayment(){
        // logic
    }

    public void processMaestroCardPayment(){
        // logic
    }

    public void processVirtualCardPayment(){
        // logic
    }

}

في الـ Code Snippet رقم 3 يمكننا رؤية أن الـ PaymentCalculator Class يحتوي على بعض البيانات المهمة الخاصة بطريقة الشحن بالاضافة لطريقة حساب التكلفة لكل نوع من طريقة الشحن .. ولكن هل يمكنك معرفة أين المشكلة ؟

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

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

اشترك الآن 🚀

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

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

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

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

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

  • 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
  • Working With Feedbacks: Legacy Code #02 2 min read

    Working With Feedbacks: Legacy Code #02

    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 - 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©