zoukankan      html  css  js  c++  java
  • 【进阶修炼】——改善C#程序质量(8)

    122,以<Company>.<Component>作为命名空间。

    如Microsoft.Windows.Design。也可以用域名作为空间,如www.microsoft.com,就可以写成com.microsoft. <Component>,这种命名方法在java中比较常见。但.net中似乎不是很推荐,最好用第一种。好的命名空间可以避免不同程序集间类名的冲突。

    123,程序集不必与命名空间同名。

    程序集名称表示的是物理分组,而命名空间是逻辑分组,两者没有必然的联系。但考虑习惯,dll文件名称一般与命名空间一致,如System.Data.dll,我们一看就知道它的命名空间是System.Data。而一些exe主程序则不必要这样命名。

    124,考虑在命名空间中使用复数名称。

    例如System.Collections,我们一看就知道它的下面是一组关于集合的类,而System.AllCollection等都不是很好。

    125,避免使用FCL中的类型名称。

    如Socket等。避免引起不必要的混淆和bug,这取决于我们对FCL中的类型的熟悉度。

    126,用名词或名词组给类型命名。

    类型对应着现实世界中的对象,对象就意味着它应该是一个名词。

    127,用形容词为接口命名。

    接口代表着“Can do”,表示一种能力。如:ICloneable等。

    128,考虑让派生类的名字以基类的名字结尾。

    从类型的名字上我们就可以判断出他的继承体系。比如常见的EventArgs,Attribute,但是一些以xxxBase结尾的类则不适用。因为Base结尾代表着它是基类。

    129,泛型类型的参数应以T作为前缀。

    如Func<in T1, in T2, out TResult>,我们看到以T开头的命名就知道是泛型参数,而不会误以为是一个类名。

    130,枚举类型的命名应含有复数意义。

    它表达的是一组相关元素的组合。如:DTSubStringType。

    131, 用PascalCasing命名公开成员。

    外部可见的成员,如属性,字段,方法等都应该用PascalCasing命名。

    132, 考虑以类型名作为属性名。

    比如public Company Company{get;set;};当然有多个相同类型的属性时除外。

    133, 用camelCasing命名私有字段和局部变量。

    134, 有条件的使用前缀。

    如果类足够小,那么完全没有必要使用前缀。但是往往我们创建的类都很大,可以适当的为类的成员变量添加m_,为静态变量添加s_前缀。添加变量类型的前缀是不必要的,如intTotal,对于强类型的语言,前面的int是多余的。另外,为了区分成员变量和局部变量,最好在使用成员变量时添加this.前缀。

    135, 考虑使用肯定性的短语命名bool值。

    比如以Is,Can,Has等开头。IsChecked,IsEnabled,AllowDrop等都是好的命名。

    136, 优先使用后缀表示已有类型的新版本。

    比如微软曾经有一个X509Certificate类,现在有了一个新版本的类,作为它的替代类,于是就命名为X509Certificate2,这是做法看起来好像不专业,但他的扩展性很好,将来可能还有X509Certificate3,另外,当我们使用代码提示的时候,也可以同时提示出这两个类,开发者可以选择最新的类。

    137, 委托和事件应添加上级后缀。

    如:SizeChangeEventHandler,HttpContinueDelegate,AsyncCallBack。事件加EventHandler,委托如果是用于回调的加CallBack。

    138, 委托和事件变量要用动词或形容词短语。

    上面一条说的是委托类型的命名,这一条是委托变量的命名。如public event SizeChangeEventHandler SizeChanged;Public RoutedEventHander Click;千万不要这要命名:public event SizeChangeEventHandler SizeChangeEventHandler;

    139, 事件处理器命名采用组合方式。

    如为Button添加Click事件,事件处理器名应为【事件变量所属对象+下划线+事件变量名】,private void Button_Click(object sender,EventArgs e);前面这种命名适用于采用注册的方式即+=的方式添加事件处理器。如要为委托或回调编写处理器,则应采用【委托变量所属对象+On+委托变量名】,如NameOnPropertyChanged,在我个人看来,委托变量所属对象实属多余,直接OnPropertyChanged,或是跟着微软学,对于事件在后面在添加一个Event,OnPropertyChangedEvent。

  • 相关阅读:
    String 总结
    android 调试源码
    Java 随机数总结
    Android中如何控制调节屏幕亮度
    Activity中通过Bundle传递自定义数据类型
    Android AsyncTask简单用法
    WCF 第五章 可信赖会话
    WCF 第五章 会话级别的实例
    WCF 第五章 行为 在WCF一个服务内部的事务操作
    WCF 第五章 导出并发布元数据(服务行为)
  • 原文地址:https://www.cnblogs.com/xiashengwang/p/4013700.html
Copyright © 2011-2022 走看看