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


    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(){}
  • 相关阅读:
    Web 性能优化
    js 校验身份证
    html5 输入框响应enter按键
    获取浏览器的可视窗口宽高
    js打开新标签
    Java数据脱敏框架
    Spring Boot中的事务管理
    运维监控知识体系
    git常用命令图解 & 常见错误
    安全团队不可错过的七个云安全开源工具(转载)
  • 原文地址:https://www.cnblogs.com/errornull/p/9833573.html
Copyright © 2020-2023  润新知