编码规范

命名规范

大小写规范

分类 大小写 例子
名字空间 Pascal System.Drawing
Pascal AppDomain
接口 Pascal IDisposable
枚举类型 Pascal ErrorLevel
枚举值 Pascal FatalError
方法 Pascal ToString
属性 Pascal BackColor
事件 Pascal ValueChanged
只读静态字段 Pascal RedValue
参数 Camel typeName
局部变量 Camel targetCount
私有字段 Private Camel _brushColor,m_brashColor

取名规则

NameSpace
  1. 命名规则:CompanyName.(<ProductName>|<Technology>)[.<Feature>][. <Subnamespace>]
  2. 必须避免与已有的命名空间和类名冲突
Class
  1. 使用名词、名词短语或形容词短语,类前不要加前缀,子类建议采用基类作为后缀。
    例如:从Stream继承的类,采用Stream作为后缀
Interface
  1. 接口前面必须加上I
    例如 IAsynResult
Event
  1. 在事件中使用的类型,建议加后缀EventHandler。
    例如:AssemblyLoadEventHandler
方法
  1. 方法名称应为动词或动词短语。
    例如:EnterCopyMap
属性
  1. 属性名称应为动词或动词短语,属性名称不要以GetXXX命名形式。
    例如:Length
  2. 布尔类型属性名称建议采用肯定语气命名,以Can或Has等作前缀。
    例如:CanRead,IsGood

变量命名

  1. 变量命名建议加上类型的缩写,便于阅读,int类型用i,字符串用str,float用f。
    例如:iCount, fValue, strFileName
  2. 变量命名必须使用有意义的名称,能直观表达变量的用途,静止使用语言的关键字作为名称。
    错误例子1:int public
    错误例子2:int a

注释规范

文件注释

类的注释

成员变量

静态变量

属性

异常使用规范

在框架架代码中,不要通过捕获非特定异常的方式(如:Exception SystemException),淹没(swallow)错误,如果捕获的目的是重新抛出异常,或将异常交给其他线程处理,你才能这么做。
错误处理例子:

public class BadExceptionHandlingExamplel
{
    public void DoWork()
    {
        //做一些可能抛出异常的工作
    }
    public void MethodWithBadHandler()
    {
        try
        {
            DoWork()
        }
        catch(Exception ex)
        {
            //淹没了异常并继续执行
        }
    }
}

捕获特定的异常,如果你理解为什么它会从给定的上下文中抛出,你应该只捕获那些
你可以恢复的异常◊例如:打幵不存在文件造成的FileNotFoimdException可以被应用程序
处理,因为它可以将问题告知用户,并让用户设罝其他文件名。而打幵文件请求抛出W
ExcutionEngineException不应当被处理,因为低层发生的问题无法被知晓,并且应用程序也
不能确认继续运行是否安全.

不要过渡使用catch,异常应当尽可能向调用堆钱上层传递,捕获无法正确处理的异
常,会隐藏重要的调试信息,将清理代码放在finally块中,而不是catch块中◊对于书写
优良的代码,try-finally比try-catch更为常见,catch的目的是为了让你处理异常(例如,
记录非致命错误),firmly的目的是为了让你执行清理代码而不管异常是否抛出◊如果你
分配了有限的资源,比如数据库联接或stream,你应当将释放它们的代码放在finally块
中,当捕获并重新抛出异常时,使用空的throw这是保存调用堆栈的最好的方法