سؤال

هل من الممارسات الجيدة السماح للفئات المجردة بتعريف متغيرات الحالة؟

public abstract class ExternalScript extends Script {

    String source;

    public abstract void setSource(String file);

    public abstract String getSource();
}

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

ما هي نصيحتك؟

/آدم

هل كانت مفيدة؟

المحلول

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

public abstract class ExternalScript extends Script {

private String source;

public void setSource(String file) {
    source = file;
}

public String getSource() {
    return source;
}

بالعودة إلى السؤال، هل سبق لك أن تهتم بالنظر إلى مكان وجود رمز getter/setter عند قراءته؟إذا قاموا جميعًا بالحصول على الإعداد والإعداد، فلا داعي للقلق بشأن ما "تفعله" الوظيفة عند قراءة الكود.هناك بعض الأسباب الأخرى التي يجب التفكير فيها أيضًا:

  • إذا كان المصدر محميًا (يمكن الوصول إليه عن طريق الفئات الفرعية)، فسيصبح الكود فوضويًا:من يغير المتغيرات؟عندما يكون كائنًا، يصبح الأمر صعبًا عندما تحتاج إلى إعادة البناء، بينما تميل الطريقة إلى جعل هذه الخطوة أسهل.
  • إذا كانت أساليب getter/setter الخاصة بك لا يتم الحصول عليها وإعدادها، فقم بوصفها كشيء آخر.

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

نصائح أخرى

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

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

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top