مشاركة عبر


تصميم معلمة

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

قم باستخدام نوع معلمة اشتقاق الصغرى التي توفر الوظائف مطلوب بالعضو.

يلي تعليمات برمجية يوضح المثال هذه الإرشادات العامة. BookInfoترث الفئة من Publicationفئة. Managerاثنين بتطبيق فئة وظائف: BadGetAuthorBiography و GoodGetAuthorBiography. BadGetAuthorBiography uses references to BookInfo objects even though it uses only members declared in Publication. GoodGetAuthorBiographyأسلوب يوضح التصميم الصحيح.

' A Class with some basic information.
Public Class Publication
    Dim Protected authorValue as String
    Dim Protected publicationDateValue as DateTime

    Public Sub new(author as String, publishDate as DateTime)
        Me.authorValue = author
        Me.PublicationDateValue = publishDate
    End Sub

    Public Readonly Property  PublicationDate as DateTime 
        Get
            Return publicationDateValue
        End Get
    End Property

    Public Readonly Property Author as String
        Get 
            Return authorValue
        End Get
    End Property
End Class

' A Class that derives from Publication
Public Class BookInfo 
    Inherits Publication

    Dim isbnValue as String

    Public Sub new(author as string, _
        publishDate as DateTime, _
        isbn as String) 
        MyBase.New(author, publishDate)
        Me.isbnValue = isbn
    End Sub

    Public Readonly Property Isbn as String
        Get 
            Return isbnValue
        End Get
    End Property
End Class

Public Class Manager
    ' This method does not use the Isbn member
    ' so it doesn't need a specialized reference to Books
    Shared Function BadGetAuthorBiography(book as BookInfo) as String
        Dim biography as String = ""
        Dim author as String = book.Author
        ' Do work here.
        Return biography
    End Function

    ' This method shows the correct design.
    Shared Function GoodGetAuthorBiography(item as Publication) as String
        Dim biography as String = ""
        Dim author as String = item.Author
        ' Do work here.
        Return biography
    End Function
// A class with some basic information.
public class Publication
{
    string author;
    DateTime publicationDate;

    public Publication(string author, DateTime publishDate)
    {
        this.author = author;
        this.publicationDate = publishDate;
    }
    public DateTime PublicationDate
    {
        get {return publicationDate;}
    }
    public string Author
    {
        get {return author;}
    }
}

// A class that derives from Publication
public class BookInfo :Publication
{
    string isbn;
    public BookInfo(string author, DateTime publishDate, string isbn) :
            base(author, publishDate)
    {
        this.isbn = isbn;
    }
    public string Isbn
    {
        get {return isbn;}
    }
}

public class Manager
{
    // This method does not use the Isbn member
    // so it doesn't need a specialized reference to Books
    static string BadGetAuthorBiography(BookInfo book)
    {
        string biography = "";
        string author = book.Author;
        // Do work here.
        return biography;

    }
    // This method shows the correct design.
    static string GoodGetAuthorBiography(Publication item)
    {
        string biography = "";
        string author = item.Author;
        // Do work here.
        return biography;
    }

لا استخدم حجز معلمات.

يمكن إضافة الإصدارات المستقبلية من مكتبة التحميلات الزائدة الجديدة التي تأخذ معلمات إضافى.

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

    Public Sub BadStoreTimeDifference (localDate as DateTime, _
        toWhere as TimeZone, _
        reserved as Object)
        ' Do work here.
    End Sub

Public Sub GoodCStoreTimeDifference (localDate as DateTime, _
    toWhere as TimeZone)
    ' Do work here.
End Sub

Public Sub GoodCStoreTimeDifference (localDate as DateTime, _
    toWhere as TimeZone, _
    useDayLightSavingsTime as Boolean)
    ' Do work here.
End Sub
    public void BadStoreTimeDifference (DateTime localDate, 
        TimeZone toWhere, 
        Object reserved)
    {
        // Do work here.
    }

public void GoodCStoreTimeDifference (DateTime localDate, 
    TimeZone toWhere)
{
    // Do work here.
}
public void GoodCStoreTimeDifference (DateTime localDate, 
    TimeZone toWhere, 
    bool useDayLightSavingsTime)
{
    // Do work here.
}

لا استخدم علنا كشف وظائف الحصول على مؤشرات أو صفائف من المؤشرات الصفائف متعددة الأبعاد كمعلمات.

لا يجب أن يكون مطلوباً لمعرفة هذه الميزات المتقدمة إلى استخدام معظم المكتبات.

قم بوضع الجميع بعيداً معلمات بعد الجميع مرور بقيمة ومرجع معلمات (باستثناء صفائف معلمة)، حتى إذا كان هذا ما يؤدي عدم تناسق في الترتيب بين التحميلات الزائدة معلمة.

يجعل هذا الاصطلاح توقيع الأسلوب سهل الفهم.

تكون متوافقة في تسمية المعلمات عند تجاوز الأعضاء أو تطبيق أعضاء الواجهة.

يجب أن تجاوزات باستخدام نفس اسم معلمة. يجب أن تستخدم التحميلات الزائدة أسماء المعلمات نفس كـ العضو المعرف. يجب أن تطبيقات واجهة استخدم نفس الأسماء المعرفة في توقيع العضو الواجهة.

أجزاء حقوق النشر 2005 Microsoft Office 2010 Suite Corporation. كافة الحقوق محفوظة.

أجزاء حقوق النشر شركة Addison-Wesley. كافة الحقوق محفوظة.

ل المزيد المعلومات تشغيل إرشادات التصميم، راجع "إطار عمل إرشادات التصميم: كتاب اصطلاحات، Idioms، و نقش لمكتبات.NET القابل لإعادة الاستخدام"ب Krzysztof Cwalina و رفيق Abrams، ينشره Addison-Wesley، 2005.

راجع أيضًا:

موارد أخرى

إرشادات تصميم عضو

تصميم إرشادات لتطوير مكتبات فئة