ConstructiCat Logo
CodeBust.
Browse section ▾

تغليف الحقل.

Problem

لديك حقل عام (public field).

Solution

اجعل الحقل خاصاً (private) وأنشئ دوال وصول (access methods) له.

##Example

Before
class Person {
  public String name;
}
After
class Person {
  private String name;

  public String getName() {
    return name;
  }
  public void setName(String arg) {
    name = arg;
  }
}

##Why Refactor

أحد ركائز البرمجة كائنية التوجه (OOP) هو التغليف (Encapsulation)، أي القدرة على إخفاء بيانات الكائنات. خلاف ذلك، ستكون جميع الكائنات عامة ويمكن للكائنات الأخرى الحصول على بيانات كائنك وتعديلها دون أي فحوصات أو ضوابط! تفصل البيانات عن السلوكيات المرتبطة بها، وتتعرض نمطية (modularity) أقسام البرنامج للخطر، وتصبح الصيانة معقدة.

##Benefits

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

  • يمكنك أيضاً إجراء عمليات معقدة تتعلق بالوصول إلى حقول الكائنات.

##How to Refactor

  1. أنشئ دالة الحصول (getter) ودالة التعيين (setter) للحقل.

  2. ابحث عن جميع استدعاءات الحقل. استبدل الحصول على قيمة الحقل بدالة الحصول، واستبدل تعيين قيم الحقل الجديدة بدالة التعيين.

  3. بعد استبدال جميع استدعاءات الحقل، اجعل الحقل خاصاً (private).

الخطوات التالية

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