




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、设计文档介绍及讨论设计文档介绍及讨论模板的版本号:模板的版本号:1.1.1 编号:编号:RZ-RC-OT-18-2修订履历修订履历修订日期 修订原因 修订内容 修订人 版本号 计划工时*消耗工时* 说明:“计划工时”指估算编写本教材的工时;“消耗工时”指实际消耗工时。日程介绍日程介绍 代码文件编码规范代码文件编码规范 数据库编码规范数据库编码规范 业务逻辑概要设计业务逻辑概要设计 页面逻辑概要设计页面逻辑概要设计3代码文件编码规范代码文件编码规范 Pascal和和Camel命名法命名法 代码文件格式代码文件格式 注释注释 命名命名 内容内容45Pascal命名法和命名法和Camel命名法命名法
2、 两种命名方式均被两种命名方式均被.NET Framework类库使用。类库使用。 Pascal命名法命名法 由一系列单词组成,每个单词的首字母大写,其它字母由一系列单词组成,每个单词的首字母大写,其它字母小写,不要使用下划线。例子:小写,不要使用下划线。例子:WebForm、HttpRequest。 Camel命名法命名法 和和Pascal命名法类似,区别在于首字母小写。例子:命名法类似,区别在于首字母小写。例子:firstPage, lastPage。6代码文件格式代码文件格式 尽量不要使用太宽的行。不要超过尽量不要使用太宽的行。不要超过160个西方字个西方字符(每个汉字相当于符(每个汉字
3、相当于2个西方字符)个西方字符) 正确地折行,折行以后需要正确地缩进。正确地折行,折行以后需要正确地缩进。 规范使用空格、括号、花括号。规范使用空格、括号、花括号。 Visual Studio 可以根据预定义的模板自动进行可以根据预定义的模板自动进行格式化。需要使用公司提供的格式化模板格式化。需要使用公司提供的格式化模板7注释注释避免使用过于花哨和装饰性的注释。避免使用过于花哨和装饰性的注释。注释必须有意义,注释用于帮助代码的阅读者理解代注释必须有意义,注释用于帮助代码的阅读者理解代码。码。不要包含版本控制和修订的信息。这些工作由版本控不要包含版本控制和修订的信息。这些工作由版本控制系统完成更
4、加合适。制系统完成更加合适。不要包含完全无用的注释。不要包含完全无用的注释。不要包含错误的注释。不要包含错误的注释。在一个长方法(在一个长方法(50行以上)中使用注释。行以上)中使用注释。长方法必然包含比较复杂的业务逻辑,所以必须加入长方法必然包含比较复杂的业务逻辑,所以必须加入注释。注释。8注释(续)注释(续)对外的方法必须加入注释对外的方法必须加入注释对外的方法往往被其他人阅读,所以必须加入注释。对外的方法往往被其他人阅读,所以必须加入注释。对参数进行注释。对参数进行注释。参数名往往比较简短,通过参数名不一定可以直观知参数名往往比较简短,通过参数名不一定可以直观知道这个参数的含义。道这个参
5、数的含义。简要说明每个参数的具体含义。更详细的描述可以放简要说明每个参数的具体含义。更详细的描述可以放在文档中。在文档中。在复杂的控制语句周围使用注释。在复杂的控制语句周围使用注释。控制语句表示业务逻辑,复杂的控制语句表示复杂的控制语句表示业务逻辑,复杂的控制语句表示复杂的业务逻辑。业务逻辑。9命名命名基本原则基本原则除了用于循环体的变量以及短生命周期变量之外,任除了用于循环体的变量以及短生命周期变量之外,任何变量命名都应当有富有意义。比如何变量命名都应当有富有意义。比如int maxValue 的的意义比意义比 int x 更利于阅读和理解。更利于阅读和理解。循环体变量应当选择循环体变量应当
6、选择i,j,k,l,m,n等等。等等。循环体变量具有大家默认的含义,所以不必太长。循环体变量具有大家默认的含义,所以不必太长。循环体变量会被多次引用,所以不必太长。循环体变量会被多次引用,所以不必太长。短生命周期变量可以采用简写,比如短生命周期变量可以采用简写,比如int idx。短生命周期变量指:定义之后就被使用,并且很快就不再使用短生命周期变量指:定义之后就被使用,并且很快就不再使用的。的。10命名(续)命名(续)基本原则基本原则类和方法的命名都应当清晰且富有意义。类和方法的命名都应当清晰且富有意义。同一个概念前后命名要统一同一个概念前后命名要统一名词、动词前后尽量一致。不要混合使用名词、
7、动词前后尽量一致。不要混合使用Person、People或者或者StartDate、BeginDate或者或者Add、Insert。全部使用缩写,或者全部不用缩写。全部用全部使用缩写,或者全部不用缩写。全部用indexId或者全部用或者全部用idxId。对外的方法,参数顺序也应当尽量一致。对外的方法,参数顺序也应当尽量一致。同一个逻辑含义的方法,应当尽量同名,通过重载参数列表来区分。同一个逻辑含义的方法,应当尽量同名,通过重载参数列表来区分。任何时候都不应当采用中文命名。任何时候都不应当采用中文命名。拼音缩写命名应当尽量少采用拼音缩写命名应当尽量少采用。 混合使用英文和拼音会导致阅读困难。混合
8、使用英文和拼音会导致阅读困难。拼音本身很难做到见名知义。拼音本身很难做到见名知义。11命名(续)命名(续)名字空间名字空间使用使用Pascal命名法或者缩写。命名法或者缩写。例子:例子:System.Web.Utils、System.IO常量常量全部大写,全部大写, 多个单词之间用下划线连接。例子:多个单词之间用下划线连接。例子:MIN_DATE,MAX_DATE。变量和参数变量和参数局部变量采用局部变量采用Camel命名法。尽量采用形容词命名法。尽量采用形容词+名词的方式名词的方式。例子:。例子:totalPrice, hiddenText。因为变量往往表示主语。因为变量往往表示主语或者宾语
9、。例如:或者宾语。例如:user.Upload(report);成员变量采用成员变量采用“m_”前缀。前缀。不要使用类型前缀。不要使用类型前缀。只读变量同常量。只读变量同常量。12命名(续)命名(续)接口接口接口采用接口采用Pascal命名法,要求尽可能采用形容词,并且应当命名法,要求尽可能采用形容词,并且应当加入加入“I”前缀。比如前缀。比如IThrowable。接口的含义是能够实现某些功能,比如接口的含义是能够实现某些功能,比如IDisposable表示可以被释放,表示可以被释放,IClonable表示可以复制。表示可以复制。类类类采用类采用Pascal命名法,要求尽可能采用形容词命名法,
10、要求尽可能采用形容词+名词的方式名词的方式。比如。比如FastCache。如果某个类继承自其它类,则尽可能采用修饰词如果某个类继承自其它类,则尽可能采用修饰词+父类名的父类名的方式,比如方式,比如XmlConfigurator 继承自继承自 父类父类 Configurator。对于集合类型,应当采用基类型对于集合类型,应当采用基类型+“Collection”后缀。后缀。对于特性类型,即继承自对于特性类型,即继承自System.Attribute的类型,应当采的类型,应当采用用“Attribute”后缀。后缀。类的属性也采用类的属性也采用Pascal命名法,如果该属性表示复数,则命命名法,如果该
11、属性表示复数,则命名也应当采用复数形式。比如名也应当采用复数形式。比如Company.Employees。13命名(续)命名(续)方法方法方法采用方法采用Pascal命名法,要求尽可能采用动词命名法,要求尽可能采用动词+名词的方式名词的方式。比如。比如LoadBookById。方法往往作为谓语,表示某个动作。方法往往作为谓语,表示某个动作。对于表示是否的方法,采用对于表示是否的方法,采用“Is”前缀。例如:前缀。例如:IsFloatReport();对于表示存在的方法,采用对于表示存在的方法,采用“Exists”前缀。例如前缀。例如ExistsUser。对于同等业务逻辑含义的方法,尽可能采用参
12、数列表重载的对于同等业务逻辑含义的方法,尽可能采用参数列表重载的方式,不要增加太多的方法方式,不要增加太多的方法 。枚举枚举枚举的命名方式同类。除非有额外的要求,否则枚举对应的枚举的命名方式同类。除非有额外的要求,否则枚举对应的数字应当从数字应当从1开始递增。开始递增。对于可以叠加的枚举,应当加入对于可以叠加的枚举,应当加入Flag特性。特性。14代码代码方法方法尽量使用不定参数。尽量使用不定参数。当需要对一批对象进行处理时,调用方式更加直观、简单。当需要对一批对象进行处理时,调用方式更加直观、简单。对参数进行断言检查。对参数进行断言检查。如果参数本身不合法,那么后续执行结果必然错误。如果参数
13、本身不合法,那么后续执行结果必然错误。检查内容应当是合法性,而不需要检查合理性。参数不合法往检查内容应当是合法性,而不需要检查合理性。参数不合法往往预示编码错误,而参数不合理则有可能是逻辑错误。往预示编码错误,而参数不合理则有可能是逻辑错误。对运行结果进行断言检查。对运行结果进行断言检查。如果运行结果不合法,那么后续的其它调用必然错误。如果运行结果不合法,那么后续的其它调用必然错误。15代码(续)代码(续)循环循环尽量尽量LINQ实现循环操作。实现循环操作。语义清晰,结构简单。语义清晰,结构简单。出现错误的可能性最小。出现错误的可能性最小。容易扩展,泛用性强。容易扩展,泛用性强。如果无法使用如
14、果无法使用LINQ,尽量使用,尽量使用foreach实现循环操作实现循环操作。foreach循环出现边界错误的可能性比循环出现边界错误的可能性比for更小。更小。16代码(续)代码(续)集合集合尽量使用泛型集合。尽量使用泛型集合。泛型集合省去泛型集合省去box/unbox操作,效率更高。操作,效率更高。泛型集合采用强类型参数,不易出错。泛型集合采用强类型参数,不易出错。容易扩展,泛用性强。容易扩展,泛用性强。数据库编码规范数据库编码规范 表表 存储过程和自定义函数存储过程和自定义函数 注释注释 命名命名1718表表 基本表基本表 适当进行横切和纵切。适当进行横切和纵切。 表越少越好。表越少越好
15、。 不要保留无效的表或者重复的表。不要保留无效的表或者重复的表。 表的列越少越好。表的列越少越好。 可以适当的分出子表。具体做法是可以适当的分出子表。具体做法是“列转行列转行”。这样以增加表为。这样以增加表为代价,使逻辑结构更加清晰,更容易编写代价,使逻辑结构更加清晰,更容易编写SQL命令。命令。 代码表代码表 分为分为ID列,列,Seq列,列,Value列。列。 可以增加更多的列,比如可以增加更多的列,比如Category,表示代码分类;,表示代码分类;ParentId,表示上一级代码等等。表示上一级代码等等。19表(续)表(续) 索引索引 根据查询来决定索引。根据查询来决定索引。 可选值最
16、多的列需要建索引。可选值最多的列需要建索引。 主键和外键主键和外键 任何表都必需有主键。主键全部使用任何表都必需有主键。主键全部使用GUID,即长度为,即长度为32的非的非Unicode文本。对于文本。对于SQLServer是是char(32)。 在数据合并、恢复或者事务中创建记录的时候,自增在数据合并、恢复或者事务中创建记录的时候,自增ID会带来很会带来很大麻烦。大麻烦。 尽可能定义外键。尽可能定义外键。 外键和主键共同构成了各个实体之间的关系。外键和主键共同构成了各个实体之间的关系。 尽量定义唯一性约束。尽量定义唯一性约束。20存储过程和自定义函数存储过程和自定义函数 存储过程和自定义函数
17、应当尽可能少包含业务逻存储过程和自定义函数应当尽可能少包含业务逻辑,除非该业务逻辑采用了批量操作。辑,除非该业务逻辑采用了批量操作。 数据库擅长进行批量操作并且只擅长进行批量操作。数据库擅长进行批量操作并且只擅长进行批量操作。 存储过程和自定义函数应当尽可能少包含控制语存储过程和自定义函数应当尽可能少包含控制语句,分支判断和循环应当尽可能放在前台开发语句,分支判断和循环应当尽可能放在前台开发语言(比如言(比如C#或者或者Java)中实现。)中实现。 分支判断意味着业务逻辑。把业务逻辑分散在代码和数分支判断意味着业务逻辑。把业务逻辑分散在代码和数据库中,会造成极难维护。据库中,会造成极难维护。
18、数据库永远不适合做循环操作。数据库永远不适合做循环操作。 存储过程和自定义函数的作用应当单一,不要使存储过程和自定义函数的作用应当单一,不要使用一个存储过程或者函数实现多种功能。用一个存储过程或者函数实现多种功能。21存储过程和自定义函数(续)存储过程和自定义函数(续) 存储过程和自定义函数中尽量少使用存储过程和自定义函数中尽量少使用eval或者类或者类似的语句,这种语句会造成调试困难,并且数据似的语句,这种语句会造成调试困难,并且数据库无法对这种语句进行优化和缓存。库无法对这种语句进行优化和缓存。 尽量避免在存储过程或者自定义函数中开启事务尽量避免在存储过程或者自定义函数中开启事务。事务属于
19、业务逻辑范畴,尽可能放在前台开发。事务属于业务逻辑范畴,尽可能放在前台开发语言(比如语言(比如C#或者或者Java)中实现。)中实现。 不要在存储过程或者自定义函数中检查参数合法不要在存储过程或者自定义函数中检查参数合法性。都放在前台开发语言(比如性。都放在前台开发语言(比如C#或者或者Java)中实现。中实现。 不要在存储过程或者自定义函数中使用游标。不要在存储过程或者自定义函数中使用游标。 每次游标移动每次游标移动 ,都意味着重新执行一遍查询,都意味着重新执行一遍查询SQL。22命名命名 变量和参数变量和参数 采用采用Camel命名法命名法, 要求尽可能采用名词或者形容词要求尽可能采用名词
20、或者形容词+名词的方式。名词的方式。 对参数进行注释。对参数进行注释。23命名(续)命名(续)表表 表采用表采用Pascal命名法,要求尽可能采用形容词命名法,要求尽可能采用形容词+名词的方式名词的方式。比如。比如“Report”。 对于代码表,要求采用对于代码表,要求采用“Code”后缀,比如后缀,比如“ReportTypeCode”。 表的列也全部采用表的列也全部采用Pascal命名法,要求尽可能采用形容词命名法,要求尽可能采用形容词+名词的方式,比如名词的方式,比如“AllAsset”。 对于主键,要求采用表名对于主键,要求采用表名 + “Id”的方式命名,比如的方式命名,比如“ReportId”。这种方式在写比较负责的连接查询时不易出错。这种方式在写比较负责的连接查询时不易出错。 对于外键,要求和外键表的主键名完
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 消防工程验收合格标准试题及答案
- 审计法规范解读的试题及答案
- 审计风险评估方法试题及答案分析
- 实战二级消防工程师试题及答案经验分享
- 中级审计师备考的心理调整与试题及答案
- 英语教学课件Unit 3 Family ties 单词讲解课件第一课时含内嵌音频新外研2024版七上英
- 消防设计方案评审要点试题及答案
- 消防设施在大型场所的配置方案试题及答案
- 2025年二级消防工程师全景试题及答案
- 护理数据分析技巧试题及答案培训
- 2025年二级风力发电运维值班员职业技能鉴定考试题库(浓缩500题)
- 江苏省南京市、盐城市2025届高三年级5月第二次模拟考试化学试题及答案(南京盐城二模)
- 2025新能源汽车技术的应急管理策略试题及答案
- 建筑劳务分包合同中的税务问题3篇
- 2024-2025人教版一年级下册数学期末考试卷附答案 (三套)
- 消防作战训练安全常识及灾情处置考试题库
- 中国世界文化遗产长城的资料整理
- 研究生入学体检表
- 工控培训教程、手册合集倍福plc从入门到精通
- 三年级下册美术教案-第11课 门票设计-非遗馆|浙美版
- 档案袋密封条模板
评论
0/150
提交评论