命名:
对于理解应用程序的逻辑流,命名方案是最有影响力的一种帮助。名称需说明是"什么"而不是"如何"。通过避免使用公开基础实现它们会发生改变)的名称,可以保留简化复杂性的抽象层。
布尔变量名应该以Is开头
变量名命名需利用面向对象思想减少冗余
使用状态变量时不适宜使用flag,而需要更具体,如DocType等
常量命名规范 UPPER
长度一般两到三个单词,不宜超过三个
不宜使用缩写,除非缩写众所周知
注记 :
Pascal 大小写形式-所有单词第一个字母大写,其他字母小写。
Camel 大小写形式-除了第一个单词,所有单词第一个字母大写,其他字母小写。
· 类名使用Pascal 大小写形式
· 方法使用Pascal 大小写形式
public class HelloWorld{ void SayHello(string name) { ... }}
· 变量和方法参数使用Camel 大小写形式
public class HelloWorld{ int totalCount = 0; void SayHello(string name) { string fullMessage = "Hello " + name; ... }}
· 不要使用匈牙利方法来命名变量
· 用有意义的,描述性的词语来命名变量
- 别用缩写。用name, address, salary等代替 nam, addr, sal
- 别使用单个字母的变量象i, n, x 等. 使用 index, temp等
- 命名空间需按照标准的模式命名
· 文件名要和类名匹配
缩进和间隔
· 缩进用 TAB . 不用 SPACES.。
· 注释需和代码对齐.。
· 花括弧 ( {} ) 需和括号外的代码对齐.。
· 用一个空行来分开代码的逻辑分组。
· 在一个类中,各个方法需用一空行隔开
· 花括弧独立一行
· 运算符和括号的前后均空一格
良好的编程习惯
遵从以下良好的习惯以写出好程序
· 文件代码行数不宜超过400行
· 方法代码长度不宜超过25行
· 方法名:do-something结构,无需注释
· 一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。
· 使用C# 或 VB.NET的特有类型,而不是System命名空间中定义的别名类型
· 使用常量代替固定数值,readonly优先constant
· 使用资源文件代替字符串常数
· 避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。
· 使用enum指示离散值。
· 成员变量声明为 private 使用 public/protected 的Properties.
· 代码中使用相对路径
· application需自检
· 如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。
· 如果在配置文件中发现错误值,应用程序要抛出错误,给出提示消息告诉用户正确值。
· 错误信息需简短明了,有提示,友好
注释
· 在需要的地方注释。
· 如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。
· 对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。
· 对注释做拼写检查,保证语法和标点符号的正确使用。
异常处理
· 不要隐藏异常
· 发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节
· 只捕捉特定的异常,而不是一般的异常。
· 无需捕捉一般异常(利于程序调试)
· try-catch 模块不宜太大
· 显示给用户的消息要简短而友好。但要把所有可能的信息都记录下来,以助诊断问题。
· 自定义异常不应从基类SystemException派生,而要继承于. IApplicationException。
注释:
尽量少用注释,而是重写复杂的代码节
注释简洁明了,无二义性
Conding时编写注释
在整个应用程序中,使用具有一致的标点和结构的统一样式来构造注释。
用空白将注释同注释分隔符分开。在没有颜色提示的情况下查看注释时,这样做会使注释很明显且容易被找到。
结构:
换行:逗号后,运算符前,高层优先于低层,对应同一层起始位置
局部变量在声明时需要初始化,某些局部变量,如dialog,设计使用using。
使用委托之前,必须验证ISNULL
不要提供公共的事件成员变量,使用事件访问器替换这些变量。