zoukankan      html  css  js  c++  java
  • 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(){}
  • 相关阅读:
    Linux下如何确认磁盘是否为SSD
    Nginx
    求两个Linux文本文件的交集、差集、并集
    DB磁盘满导致Zabbix Server Crash一例
    配置SSH Forward提升安全性
    更新ffmpeg
    linux系统日志__ratelimit: N callbacks suppressed
    servlet本质
    session与cookie的区别与联系
    Leetcode 19——Remove Nth Node From End of List
  • 原文地址:https://www.cnblogs.com/errornull/p/9833573.html
Copyright © 2011-2022 走看看