首页 > Windows开发 > 详细

CLR via C#学习笔记-第九章-参数和返回类型的设计规范

时间:2018-10-22 22:43:41      阅读:177      评论:0      收藏:0      [点我收藏+]

9.5 参数和返回类型的设计规范

声明方法的参数类型,应尽量指定最弱的类型,宁愿要接口也不要基类。

例如写方法来处理一组数据项,最好用接口,比如IEnumerable<T>声明参数,而不要用强数据类型,比如List<T>或者更强的接口类型,比如ICollection<T>或IList<T>

public void ManipulateItems<T>(IEnumerable<T> collection){}

原因是调用第一个方法时可以传递数组对象、List<T>对象、String对象或者其他对象——只要对象的类型实现了IEnumerbale<T>接口。相反,第二个方法只允许传递List<T>对象。

当然,如果方法需要的是列表,而非任何可枚举的对象,就应该将参数声明为IList<T>。但仍然要避免将参数类型声明为List<T>。

 

注意

这里的例子讨论的是集合,是用接口体系来设计的。讨论使用基类体系接口设计的类时,概念同样适用。

 

参数声明选择最弱的返回类型

例如对流中的字节进行处理的方法,可定义为以下方法。

public void ProcessBytes(Stream someStream){}

这个方法能处理任何流,包括FileStream、NetworkStream和MemoryStream等。

 

方法返回类型声明为最强的返回类型

相反,一般最好是将方法的返回类型声明为最强的类型,防止受限于特定类型

public FileStream OpenFile(){}

它允许方法的调用者将返回对象视为FileStream对象或者Stream对象。

 

需要修改方法内部实现选择较弱返回类型

在不影响调用者的前提下修改方法的内部实现,前面的例子中,OpenFile方法不他可能更改内部实现来返回除FileStream之外的其他对象。

如果想保持一定灵活性,在将来更改方法返回的东西,请选择一个较弱的返回类型

public IList<String> GetStringCollection(){}

CLR via C#学习笔记-第九章-参数和返回类型的设计规范

原文:https://www.cnblogs.com/errornull/p/9833573.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!