本文中的这个指南有助于你为成员参数选择正确的类型和名称。下列文章同样呈现了参数的设计指南。
- 枚举与 Boolean 参数之间的选择
- 使用可变数量的参数的成员。
- 指针参数
- 传递参数
- 验证参量
使用最少被获得的并通过成员来提供必需功能的变量类型。
下列代码范例说明了这个指导方针。BookInfo 类继承自 Publication 类。Manager 类实现了两个方法:BadGetAuthorBiography 和 GoodGetAuthorBiography。BadGetAuthorBiography 使用了一个 BookInfo 对象的引用,尽管它只使用了在 Publication 里被声明的成员。GoodGetAuthorBiography 方法示范了正确的设计。
// 拥有基本信息的类。
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;}
}
}
// 继承自 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
{
// 这个方法没有使用 Isbn 成员,因此它不需要 Books 的一个专门引用
static string BadGetAuthorBiography(BookInfo book)
{
string biography = "";
string author = book.Author;
// 在这里操作。
return biography;
}
// 这个方法说明了正确的设计。
static string GoodGetAuthorBiography(Publication item)
{
string biography = "";
string author = item.Author;
// 在这里操作。
return biography;
}
}不要使用被保留的参数。
库的将来版本中能够添加能够获取附加属性的新重载。
下列代码范例首先示范了一个违反了这个指导方针的错误方法,然后说明了另外一个正确被设计的方法。
public void BadStoreTimeDifference (DateTime localDate,
TimeZone toWhere,
Object reserved)
{
// 在这里操作。
}
public void GoodCStoreTimeDifference (DateTime localDate,
TimeZone toWhere)
{
// 在这里操作。
}
public void GoodCStoreTimeDifference (DateTime localDate,
TimeZone toWhere,
bool useDayLightSavingsTime)
{
// 在这里操作
}不要公开暴露获取指针、指针的数组,或者多维数组来作为参数的方法。
在使用大部分库的时候,明白这些高级特征应该不是必须的。
把所有的输出参数放到经值传递的参数和 ref 参数(排除参数的数组)的后面,即使这样做导致了在重载之间的参数次序出现矛盾。
这个约定使方法的签名更加容易被理解。
在成员重载或实现接口成员的时候保持一致的参数命名。
重载应该使用相同的参数名称。重载应该使用与成员声明相同的参数名称。接口的实现应该使用在接口成员的签名中被定义的相同名称。
浙公网安备 33010602011771号