سؤال

أنا تصميم نظام جديد و لدي الكثير من الواجهات التي سوف تنمو مع مرور الوقت مع النظام.ما هي أفضل الممارسات اسم هذا واجهات

ISomethingV01
ISomethingV02
etc

وأنا أفعل هذا

public interface ISomething{
      void method();
}

ثم لا بد لي من إضافة الطريقة 2 حتى الآن ماذا أفعل ؟

public interface ISomethingV2:ISomething{
      void method2();
}

أو نفس طريقة أخرى ؟

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

المحلول

من الناحية المثالية, يجب أن لا يكون تغيير واجهات كثير من الأحيان (على كل حال).إذا كنت بحاجة إلى تغيير واجهة ، يجب أن تعيد النظر في الغرض ومعرفة ما إذا كان الاسم الأصلي لا يزال ينطبق على ذلك.

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

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

حتى لو كنت في نهاية المطاف خلق ISomething, ISomething2 و ISomething3 والمستهلكين من الواجهات الخاصة بك سيكون لديك صعوبة في معرفة ما هي الاختلافات بين الواجهات.عندما ينبغي أن تستخدم ISomething2 ومتى ينبغي استخدام ISomething3?ثم عليك أن تذهب عن عملية obsoleting ISomething و ISomething2.

نصائح أخرى

أعتقد أنك overrusing الواجهات.

ماير " و " مارتن قال لنا:"فتح التمديد ولكن أغلقت تعديل!"

ثم Cwalina (وآخرون) الإعراب:

من إطار المبادئ التوجيهية تصميم...

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

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

alt text

أنا أتفق مع غارو Yeriazarian, تغيير واجهة هو قرار خطير.أيضا إذا كنت ترغب في تعزيز استخدام الإصدار الجديد من واجهة يجب أن علامة النسخة القديمة عفا عليها الزمن.في .صافي يمكنك إضافة ObsoleteAttribute.

الغرض من واجهة هو تحديد نمط مجردة في نوع يجب أن تنفذ.

سيكون من الأفضل تنفيذ مثل:

public interface ISomething

public class Something1 : ISomething
public class Something2 : ISomething

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

أنا لا أعرف لماذا الناس downvote وظيفة الخاص بك.أعتقد أن التسمية جيدة المبادئ التوجيهية جدا المهم.

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

في محاولة لإضافة معنى لاحقة لك واجهة.إذا ليس من الممكن أن إنشاء موجزة اسم ، والنظر في إضافة رقم الإصدار.

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