资源预览内容
第1页 / 共28页
第2页 / 共28页
第3页 / 共28页
第4页 / 共28页
第5页 / 共28页
第6页 / 共28页
第7页 / 共28页
第8页 / 共28页
第9页 / 共28页
第10页 / 共28页
第11页 / 共28页
第12页 / 共28页
第13页 / 共28页
第14页 / 共28页
第15页 / 共28页
第16页 / 共28页
第17页 / 共28页
第18页 / 共28页
第19页 / 共28页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,活动过程名称,2009,年,1,月,1,日,主讲人,:,某某某,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,活动过程名称,2009,年,1,月,1,日,主讲人,:,某某某,设计文档介绍及讨论,模板的版本号:,1.1.1,编号:,RZ-RC-OT-18-,2,修订履历,修订日期,修订原因,修订内容,修订人,版本号,计划工时*,消耗工时*,说明:“计划工时”指估算编写本教材的工时;“消耗工时”指实际消耗工时。,日程介绍,代码文件编码规范,数据库编码规范,业务逻辑概要设计,页面逻辑概要设计,3,代码文件编码规范,Pascal,和,Camel,命名法,代码文件格式,注释,命名,内容,4,5,Pascal,命名法和,Camel,命名法,两种命名方式均被,.NET Framework,类库使用。,Pascal,命名法,由一系列单词组成,每个单词的首字母大写,其它字母小写,不要使用下划线。例子:,WebForm,、,HttpRequest,。,Camel,命名法,和,Pascal,命名法类似,区别在于首字母小写。例子:,firstPage,lastPage,。,6,代码文件格式,尽量不要使用太宽的行。不要超过,160,个西方字符(每个汉字相当于,2,个西方字符),正确地折行,折行以后需要正确地缩进。,规范使用空格、括号、花括号。,Visual Studio,可以根据预定义的模板自动进行格式化。需要使用公司提供的格式化模板,7,注释,避免使用过于花哨和装饰性的注释。,注释必须有意义,注释用于帮助代码的阅读者理解代码。,不要包含版本控制和修订的信息。这些工作由版本控制系统完成更加合适。,不要包含完全无用的注释。,不要包含错误的注释。,在一个长方法(,50,行以上)中使用注释。,长方法必然包含比较复杂的业务逻辑,所以必须加入注释。,8,注释(续),对外的方法必须加入注释,对外的方法往往被其他人阅读,所以必须加入注释。,对参数进行注释。,参数名往往比较简短,通过参数名不一定可以直观知道这个参数的含义。,简要说明每个参数的具体含义。更详细的描述可以放在文档中。,在复杂的控制语句周围使用注释。,控制语句表示业务逻辑,复杂的控制语句表示复杂的业务逻辑。,9,命名,基本原则,除了用于循环体的变量以及短生命周期变量之外,任何变量命名都应当有富有意义。比如,int maxValue,的意义比,int x,更利于阅读和理解。,循环体变量应当选择,i,j,k,l,m,n,等等。,循环体变量具有大家默认的含义,所以不必太长。,循环体变量会被多次引用,所以不必太长。,短生命周期变量可以采用简写,比如,int idx,。,短生命周期变量指:定义之后就被使用,并且很快就不再使用的。,10,命名(续),基本原则,类和方法的命名都应当清晰且富有意义。,同一个概念前后命名要统一,名词、动词前后尽量一致。不要混合使用,Person,、,People,或者,StartDate,、,BeginDate,或者,Add,、,Insert,。,全部使用缩写,或者全部不用缩写。全部用,indexId,或者全部用,idxId,。,对外的方法,参数顺序也应当尽量一致。,同一个逻辑含义的方法,应当尽量同名,通过重载参数列表来区分。,任何时候都不应当采用中文命名。,拼音缩写命名应当尽量少采用,。,混合使用英文和拼音会导致阅读困难。,拼音本身很难做到见名知义。,11,命名(续),名字空间,使用,Pascal,命名法或者缩写。,例子:,System.Web.Utils,、,System.IO,常量,全部大写,多个单词之间用下划线连接。例子:,MIN_DATE,,,MAX_DATE,。,变量和参数,局部变量采用,Camel,命名法。尽量采用形容词,+,名词的方式。例子:,totalPrice,hiddenText,。因为变量往往表示主语或者宾语。例如:,user.Upload(report);,成员变量采用“,m_”,前缀。,不要使用类型前缀。,只读变量同常量。,12,命名(续),接口,接口采用,Pascal,命名法,要求尽可能采用形容词,并且应当加入“,I”,前缀。比如,IThrowable,。,接口的含义是能够实现某些功能,比如,IDisposable,表示可以被释放,,IClonable,表示可以复制。,类,类采用,Pascal,命名法,要求尽可能采用形容词,+,名词的方式。比如,FastCache,。,如果某个类继承自其它类,则尽可能采用修饰词,+,父类名的方式,比如,XmlConfigurator,继承自 父类,Configurator,。,对于集合类型,应当采用基类型,+“Collection”,后缀。,对于特性类型,即继承自,System.Attribute,的类型,应当采用“,Attribute”,后缀。,类的属性也采用,Pascal,命名法,如果该属性表示复数,则命名也应当采用复数形式。比如,Company.Employees,。,13,命名(续),方法,方法采用,Pascal,命名法,要求尽可能采用动词,+,名词的方式。比如,LoadBookById,。,方法往往作为谓语,表示某个动作。,对于表示是否的方法,采用“,Is”,前缀。例如:,IsFloatReport();,对于表示存在的方法,采用“,Exists”,前缀。例如,ExistsUser,。,对于同等业务逻辑含义的方法,尽可能采用参数列表重载的方式,不要增加太多的方法。,枚举,枚举的命名方式同类。除非有额外的要求,否则枚举对应的数字应当从,1,开始递增。,对于可以叠加的枚举,应当加入,Flag,特性。,14,代码,方法,尽量使用不定参数。,当需要对一批对象进行处理时,调用方式更加直观、简单。,对参数进行断言检查。,如果参数本身不合法,那么后续执行结果必然错误。,检查内容应当是合法性,而不需要检查合理性。参数不合法往往预示编码错误,而参数不合理则有可能是逻辑错误。,对运行结果进行断言检查。,如果运行结果不合法,那么后续的其它调用必然错误。,15,代码(续),循环,尽量,LINQ,实现循环操作。,语义清晰,结构简单。,出现错误的可能性最小。,容易扩展,泛用性强。,如果无法使用,LINQ,,尽量使用,foreach,实现循环操作。,foreach,循环出现边界错误的可能性比,for,更小。,16,代码(续),集合,尽量使用泛型集合。,泛型集合省去,box/unbox,操作,效率更高。,泛型集合采用强类型参数,不易出错。,容易扩展,泛用性强。,数据库编码规范,表,存储过程和自定义函数,注释,命名,17,18,表,基本表,适当进行横切和纵切。,表越少越好。,不要保留无效的表或者重复的表。,表的列越少越好。,可以适当的分出子表。具体做法是“列转行”。这样以增加表为代价,使逻辑结构更加清晰,更容易编写,SQL,命令。,代码表,分为,ID,列,,Seq,列,,Value,列。,可以增加更多的列,比如,Category,,表示代码分类;,ParentId,,表示上一级代码等等。,19,表(续),索引,根据查询来决定索引。,可选值最多的列需要建索引。,主键和外键,任何表都必需有主键。主键全部使用,GUID,,即长度为,32,的非,Unicode,文本。对于,SQLServer,是,char(32),。,在数据合并、恢复或者事务中创建记录的时候,自增,ID,会带来很大麻烦。,尽可能定义外键。,外键和主键共同构成了各个实体之间的关系。,尽量定义唯一性约束。,20,存储过程和自定义函数,存储过程和自定义函数应当尽可能少包含业务逻辑,除非该业务逻辑采用了批量操作。,数据库擅长进行批量操作并且只擅长进行批量操作。,存储过程和自定义函数应当尽可能少包含控制语句,分支判断和循环应当尽可能放在前台开发语言(比如,C#,或者,Java,)中实现。,分支判断意味着业务逻辑。把业务逻辑分散在代码和数据库中,会造成极难维护。,数据库永远不适合做循环操作。,存储过程和自定义函数的作用应当单一,不要使用一个存储过程或者函数实现多种功能。,21,存储过程和自定义函数(续),存储过程和自定义函数中尽量少使用,eval,或者类似的语句,这种语句会造成调试困难,并且数据库无法对这种语句进行优化和缓存。,尽量避免在存储过程或者自定义函数中开启事务。事务属于业务逻辑范畴,尽可能放在前台开发语言(比如,C#,或者,Java,)中实现。,不要在存储过程或者自定义函数中检查参数合法性。都放在前台开发语言(比如,C#,或者,Java,)中实现。,不要在存储过程或者自定义函数中使用游标。,每次游标移动,都意味着重新执行一遍查询,SQL,。,22,命名,变量和参数,采用,Camel,命名法,要求尽可能采用名词或者形容词,+,名词的方式。,对参数进行注释。,23,命名(续),表,表采用,Pascal,命名法,要求尽可能采用形容词,+,名词的方式。比如“,Report”,。,对于代码表,要求采用“,Code”,后缀,比如“,ReportTypeCode”,。,表的列也全部采用,Pascal,命名法,要求尽可能采用形容词,+,名词的方式,比如“,AllAsset”,。,对于主键,要求采用表名,+“Id”,的方式命名,比如“,ReportId”,。,这种方式在写比较负责的连接查询时不易出错。,对于外键,要求和外键表的主键名完全一致,比如“,IndexId”,。,写连接查询时不易出错。,24,命名(续),视图,视图的命名参照表,但是要求加入“,V_”,前缀,比如“,V_Report”,。,视图的列的命名参照表的列的命名。,25,命名(续),存储过程,存储过程采用,Pascal,命名法,要求尽可能采用动词或者动词,+,名词的方式。比如“,LoadAndFormateReport”,。,26,命名(续),自定义函数,对于判断是非的函数,应当以“,Can”,或者“,Is”,作为前缀,比如“,IsNewReport”,和“,CanPrint”,。,对于查询作用的存储过程或者函数,应当以“,Get”,作为前缀,比如“,GetReportById”,。,对于返回表值的函数,应当以“,Tbl”,作为后缀,比如“,GetUnionReportTbl”,。,对于复用库中的存储过程和函数,可以视情况加上库前缀,比如“,RL_GetReportById”,。,除了以上描述中的情形,不应当再加入任何多余的后缀或者前缀。,问题与回答,27,
点击显示更多内容>>

最新DOC

最新PPT

最新RAR

收藏 下载该资源
网站客服QQ:3392350380
装配图网版权所有
苏ICP备12009002号-6