• 【转】编写高质量代码改善C#程序的157个建议——建议127:用形容词组给接口命名


    建议127:用形容词组给接口命名

    接口规范的是“Can do”,也就是说,它规范的是类型可以具有哪些行为。所以,接口的命名应该是一个形容词,如:

    IDisposable表示可以被释放

    IEnumerable表示类型含有Items,可以被迭代。

    正是因为接口表示的是类型的行为,所以从语义上可以让类型继承多个接口,如:

        class SampleClass : IDisposable, IEnumerable<SampleClass>
        {
            //省略
            #region 实现IDisposable
            public void Dispose()
            {
                throw new NotImplementedException();
            }
            #endregion
    
            #region 实现IEnumerable
            public IEnumerator<SampleClass> GetEnumerator()
            {
                throw new NotImplementedException();
            }
    
            IEnumerator IEnumerable.GetEnumerator()
            {
                throw new NotImplementedException();
            }
            #endregion
        }

    以上代码看起来觉得符合语法,又符合语义。如果我们将接口命名为IDisposal,这给人造成的误解是:该类型是一个类,而不是接口,虽然我们在前面加了前缀I,但仍然感觉这是符合语义的。

    然而,FCL中也有一些违反此规定的例外,比如IEnumerator接口。但是,这种情况相对来说还是比较少的,在大多数情况下,我们需要始终考虑用形容词来为接口命名。

    转自:《编写高质量代码改善C#程序的157个建议》陆敏技

  • 相关阅读:
    5-2 bash 脚本编程之一 变量、变量类型等
    4-4 grep及正则表达式
    4-3 管理及IO重定向
    4-2 权限及权限管理
    CentOS7 发布 ASP.NET MVC 4 --- mono 4.6.0 + jexus 5.8.1
    CentOS7 安装 nginx
    Hibernate学习笔记--------4.查询
    Hibernate学习笔记--------3.缓存
    Hibernate学习笔记--------2.一多|多多的CRUD
    Hibernate学习笔记--------1.单表操作
  • 原文地址:https://www.cnblogs.com/farmer-y/p/8006494.html
Copyright © 2020-2023  润新知