RNOP产品组开发规范VSC#V10.docx

上传人:b****8 文档编号:10327851 上传时间:2023-02-10 格式:DOCX 页数:35 大小:232KB
下载 相关 举报
RNOP产品组开发规范VSC#V10.docx_第1页
第1页 / 共35页
RNOP产品组开发规范VSC#V10.docx_第2页
第2页 / 共35页
RNOP产品组开发规范VSC#V10.docx_第3页
第3页 / 共35页
RNOP产品组开发规范VSC#V10.docx_第4页
第4页 / 共35页
RNOP产品组开发规范VSC#V10.docx_第5页
第5页 / 共35页
点击查看更多>>
下载资源
资源描述

RNOP产品组开发规范VSC#V10.docx

《RNOP产品组开发规范VSC#V10.docx》由会员分享,可在线阅读,更多相关《RNOP产品组开发规范VSC#V10.docx(35页珍藏版)》请在冰豆网上搜索。

RNOP产品组开发规范VSC#V10.docx

RNOP产品组开发规范VSC#V10

 

RNOP产品组开发规范

(VS2005C#)

 

2008-9-22

目录

第1章概述5

1.1前言5

1.2规范制定原则5

1.3术语定义5

1.3.1Pascal大小写5

1.3.2Camel大小写5

1.4文件命名组织5

1.4.1文件命名5

1.4.2文件使用注意6

第2章代码外观7

2.1开发环境7

2.2代码在本机的存放目录7

2.3列宽7

2.4换行7

2.5缩进7

2.6空格、括号-()、花括号-{}8

第3章申明9

3.1每行声明数9

3.2初始化9

3.3位置9

3.4类和接口的声明11

3.5字段的声明11

第4章命名规范12

4.1命名概述12

4.2大小写规则13

4.3缩写14

4.4命名空间14

4.5类14

4.6接口15

4.7属性(Attribute)16

4.8参数16

4.9方法17

4.10属性(property)17

4.11常量(const)18

4.12字段18

第5章语句20

5.1每行一个语句20

5.2复合语句20

5.3if、if-else、ifelse-if语句21

5.4for、foreach语句22

5.5while语句22

5.6do-while语句22

5.7switch-case语句23

5.8try-catch语句23

5.9SQL语句24

第6章注释及异常处理25

6.1注释25

6.2异常处理26

6.3调试与编译28

第7章数据类型、ADO.NET、控件命名规则31

7.1命名方法31

7.2数据类型命名规范31

7.3ADO.NET命名规范31

7.4主要控件命名规范32

7.4.1StandardControl32

7.4.2DataControl33

7.4.3ValidationControl33

7.4.4NavigationControl34

7.4.5LoginControl34

7.4.6WebPartsControl34

7.4.7DeveloperExpress35

第8章注意事项36

8.1变量名36

8.2@符号的使用37

8.3在DataTable中查询39

8.4经验总结40

第9章代码管理42

第10章公共组件44

第11章版本控制45

第1章概述

1.1前言

为统一RNOP开发人员的编码规范,使程序具有良好的可读性,方便代码的交流和维护,特制定如下编码规定,RNOP全体开发人员需严格遵循本规范进行编码。

1.2规范制定原则

1方便代码的交流和维护。

2不影响编码的效率,不与大众习惯冲突。

3使代码更美观、阅读更方便。

4使代码的逻辑更清晰、更易于理解。

5避免重复实现(能使用公共组件尽量使用,如不满足需讨论)

1.3术语定义

1.3.1Pascal大小写

将标识符的首字母和后面连接的每个单词的首字母都大写。

可以对三字符或更多字符的标识符使用Pascal大小写。

例如:

BackColor

1.3.2Camel大小写

标识符的首字母小写,而每个后面连接的单词的首字母都大写。

例如:

backColor

1.4文件命名组织

1.4.1文件命名

1文件名遵从Pascal命名法,无特殊情况,扩展名小写。

2使用统一而又通用的文件扩展名:

C#类.cs

1.4.2文件使用注意

1. 避免将多个类放在一个文件里面。

2. 一个文件应该只有一个命名空间,避免将多个命名空间放在同一个文件里面。

3. 一个文件代码一般控制在300-400行,最好不要超过500行(不包括机器产生的代码)。

第2章代码外观

2.1开发环境

在VS中,为了项目编码规范的一致,RNOP开发人员的VS开发环境需一致(可以把VS开发环境中的编码风格和代码规范设置信息导出为一个配置文件,默认的文件后缀名为.vssettings,其他项目成员则将此文件导入到自己的VS开发环境中即可)。

2.2代码在本机的存放目录

为防止出现因程序代码在不同终端存放在不同目录下导致的编译问题,代码建议存放在本机的D盘相关目录下。

具体目录要求如下:

一期功能模块1.0版本:

盘符:

\RNOP_VSS\RNOP1.0

一期功能模块1.1版本:

盘符:

\RNOP_VSS\RNOP1.1

公共/用户组件:

VSS共享方式

2.3列宽

代码列宽控制在110字符左右。

2.4换行

当表达式超出或即将超出规定的列宽,遵循以下规则进行换行

1、在逗号后换行。

2、在操作符前换行。

3、规则1优先于规则2。

当以上规则会导致代码混乱的时候自己采取更灵活的换行规则。

2.5缩进

缩进应该是每行一个Tab(4个空格),不要在代码中使用Tab字符。

VisualStudio.Net设置:

工具->选项->文本编辑器->C#->制表符->插入空格

2.6空格、括号-()、花括号-{}

以VS2005默认值为标准。

在完成代码后,将最后出现的“}”删除再输入,VS2005系统将自动调整。

 

推荐使用CodeRushNET-3.0.8.7工具

第3章申明

3.1每行声明数

一行只建议作一个声明,并按字母顺序排列。

intlevel;//推荐

intsize;//推荐

intx,y;//不推荐

3.2初始化

建议在变量声明时就对其做初始化。

3.3位置

变量建议置于块的开始处,不要总是在第一次使用它们的地方做声明。

3.4类和接口的声明

1在方法名与其后的左括号间没有任何空格。

2左花括号“{”出现在声明的下行并与之对齐,单独成行。

3方法间用一个空行隔开。

3.5字段的声明

不要使用是public或protected的实例字段。

考虑为字段提供get和set属性访问器,而不是使它们成为公共的。

示例:

第4章命名规范

4.1命名概述

使名称足够长以便有一定的意义,并且足够短以避免冗长。

唯一名称在编程上仅用于将各项区分开。

表现力强的名称是为了帮助人们阅读:

1、避免容易被主观解释的难懂的名称,如方法名AnalyzeThis(),或者属性名xxK8。

这样的名称会导致多义性。

2、在类属性的名称中包含类名是多余的,如Book.BookTitle。

而是应该使用Book.Title。

3、只要合适,在变量名的末尾或开头加计算限定符(Avg、Sum、Min、Max、Index)。

4、在变量名中使用互补对,如min/max、begin/end和open/close。

5、布尔变量名应该包含Is,这意味着Yes/No或True/False值,如fileIsFound。

6、在命名状态变量时,避免使用诸如Flag的术语。

状态变量不同于布尔变量的地方是它可以具有两个以上的可能值。

不是使用documentFlag,而是使用更具描述性的名称,如documentFormatType。

(此项只供参考)

7、即使对于可能仅出现在几个代码行中的生存期很短的变量,仍然使用有意义的名称。

仅对于短循环索引使用单字母变量名,如i或j。

可能的情况下,尽量不要使用原义数字或原义字符串。

8、不允许采用中文命名

9、不允许采用拼音缩写命名

10、不允许采用数字编号区分命名

4.2大小写规则

标识符中的所有字母都大写。

仅对于由两个或者更少字母组成的标识符使用该约定。

例如:

System.IO

System.Web.UI

下表汇总了大写规则,并提供了不同类型的标识符的示例。

标识符

大小写

示例

Pascal

AppDomain

枚举类型

Pascal

ErrorLevel

枚举值

Pascal

FatalError

事件

Pascal

ValueChange

异常类

Pascal

WebException

注意总是以Exception后缀结尾。

只读的静态字段

Pascal

RedValue

接口

Pascal

IDisposable

注意总是以I前缀开始。

方法

Pascal

ToString

命名空间

Pascal

System.Drawing

属性

Pascal

BackColor

公共实例字段

Pascal

RedValue

注意很少使用。

属性优于使用公共实例字段。

受保护的实例字段

Camel

redValue

注意很少使用。

属性优于使用受保护的实例字段。

私有的实例字段

Camel

redValue

参数

Camel

typeName

方法内的变量

Camel

backColor

4.3缩写

1不要将缩写或缩略形式用作标识符名称的组成部分。

例如,使用GetWindow或GetWin,而不要使用GetW。

2不要使用计算机领域中未被普遍接受的缩写。

3在适当的时候,使用众所周知的缩写替换冗长的词组名称。

例如,用UI作为UserInterface缩写,用OLAP作为On-lineAnalyticalProcessing的缩写。

4.4命名空间

RNOP.所属架构层次名称.工程名称,如下所示。

例如:

namespaceRNOP.UI.NeGroupMgr//UI的网元分组管理模块

命名空间的名称需与文件路径一致。

4.5类

1、使用Pascal大小写。

2、用名词或名词短语命名类。

3、使用全称避免缩写,除非缩写已是一种公认的约定,如URL、HTML

4、不要使用类型前缀,如在类名称上对类使用C前缀。

例如,使用类名称FileStream,而不是CFileStream。

5、不要使用下划线字符“_”。

6、有时候需要提供以字母I开始的类名称,虽然该类不是接口。

只要I是作为类名称组成部分的整个单词的第一个字母,这便是适当的。

例如,类名称IdentityStore。

在适当的地方,使用复合单词命名派生的类。

派生类名称的第二个部分应当是基类的名称。

例如,ApplicationException对于从名为Exception的类派生的类是适当的名称,原因ApplicationException是一种Exception。

4.6接口

1、使用Pascal大小写。

2、少用缩写。

3、给接口名称加上字母I前缀,以指示该类型为接口

4、不要使用下划线字符“_”。

5、用名词或名词短语,或者描述行为的形容词命名接口。

例如,

IComponent使用描述性名词。

ICustomAttributeProvider使用名词短语。

IPersistable使用形容词。

6、当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。

不同之处只是接口名前有一个I前缀。

如:

提示:

窗体类命名也采用该原则,格式如:

MainForm

4.7属性(Attribute)

应该总是将后缀Attribute添加到自定义属性类。

以下是正确命名的属性类的示例。

4.8参数

1、使用描述性参数名称。

参数名称应当具有足够的描述性。

2、对参数名称使用Camel大小写。

3、使用描述参数的含义的名称,而不要使用描述参数的类型的名称。

4、不要使用保留字相同的参数名称。

5、不要给参数名称加匈牙利语类型表示法的前缀。

TypeGetType(stringtypeName)

4.9方法

1使用动词或动词短语命名方法,另外方法名需能看出它作什么。

别使用会引起误解的名字(如果名字一目了然,可能无需用文档来解释方法的功能了,也给维护带来更好的效率)。

2一个方法只完成一个任务。

不要把多个任务组合到一个方法中,即使那些任务非常小。

3使用Pascal大小写。

RemoveAll()

GetCharArray()

Invoke()

另外:

一个方法的代码长度控制在25-30行内。

避免方法中有超过5个参数的情况。

使用结构来传递多个参数。

使用重载减少对参数的判读操作。

4.10属性(property)

1使用名词或名词短语命名属性。

2使用Pascal大小写。

3不要使用匈牙利语表示法。

4对于希望通过名称反映类型属性的情况,考虑用与属性的基础类型相同的名称创建属性。

例如,如果声明名为Color的属性,则属性的类型同样应该是Color。

4.11常量(const)

所有单词大写,多个单词之间用"_"隔开。

publicconststringPAGE_TITLE="Welcome";

4.12字段

字段是指包含在类或结构中的对象或值,字段使类和结构可以封装数据。

1、拼写出字段名称中使用的所有单词。

仅在开发人员一般都能理解时使用缩写。

字段名称不要使用大写字母。

classSampleClass

{

stringurl;

stringdestinationUrl;

}

publicclassCalendarDate

{

publicintmonth;

publicintday;

publicintyear;

}

2、不要对字段名使用匈牙利语表示法。

3、不要对字段名或静态字段名应用前缀。

第5章语句

5.1每行一个语句

每行最多包含一个语句。

a++;//推荐

b--;//推荐

a++;b--;//不推荐

5.2复合语句

复合语句是指包含"父语句{子语句;子语句;}"的语句

1子语句要缩进。

2即使只有一条子语句也不要省略花括号“{}”。

while(d+=s++)

{

n++;

}

5.3if、if-else、ifelse-if语句

5.4for、foreach语句

5.5while语句

while语句使用格式

while(condition)

{

statements;

}

5.6do-while语句

do-while语句使用格式

do

{

statements;

}while(condition);

5.7switch-case语句

1、语句switch中的每个case各占一行。

2、语句switch中的case按字母顺序排列。

3、为所有switch语句提供default分支。

4、所有的非空case语句必须用break;语句结束。

5.8try-catch语句

5.9SQL语句

在书写sql语句的时候,为了易于辨认,可能会将某些表名或者字段名首字母大写,如:

IsVisible,但是某些数据库(例如Sybase)可能对表名或字段名大小写敏感。

对于IsVisible字段,在oracle数据库中可以正确识别,但是在sybase数据库中就可能报错。

因此对于sql语句,必须采用小写。

第6章注释及异常处理

6.1注释

无需每行代码,每个声明的变量都做注释。

在需要的地方注释(如:

if…else逻辑判断时)。

可读性强的代码需要很少的注释,如果所有的变量和方法的命名都很有意义,会使代码可读性很强并无需太多注释。

行数不多的注释会使代码看起来优雅。

但如果代码不清晰,可读性差,那就糟糕。

如果因为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。

对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。

简言之,要写清晰,可读的代码以致无须什么注释就能理解。

对注释做拼写检查,保证语法和标点符号的正确使用。

类需编写头信息(建议采用VS2005的模板RNOPTeamProjectClass来实现

),信息格式如下:

/***********************************************************************

*FileName:

Test1

*Description:

测试

*Creater:

xuyong@SAVAGE

*CreateTime:

09/24/200817:

02:

10

*UpdateHistory:

增加了一个TEST方法

************************************************************************/

usingSystem;

usingSystem.Collections.Generic;

usingSystem.Text;

namespaceRNOP.ParaMaintain

{

///

///Test1的摘要说明

///

publicclassTest1

{

publicTest1()

{

//

//TODO:

在此处添加构造函数逻辑

//

}

}

}

方法注释格式要求:

///

///记录操作日志

///

///操作类型

///操作表名

///是否为资源

///操作描述

///是否操作成功

publicvoidWriteOptLog(stringoptType,stringoptTable,intisRes,stringremark,intisSucc)

{

}

必须严格编写所有参数和返回值含义。

6.2异常处理

不要“捕捉了异常却什么也不做”。

如果隐藏了一个异常,你将永远不知道异常到底发生了没有。

发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。

只捕捉特定的异常,而不是一般的异常。

好:

voidReadFromFile(stringfileName)

{

try

{

//readfromfile.

}

catch(FileIOExceptionex)

{

//logerror.

//re-throwexceptiondependingonyourcase.

throw;

}

}

不好:

voidReadFromFile(stringfileName)

{

try

{

//readfromfile.

}

catch(Exceptionex)

{

//Catchinggeneralexceptionisbad…wewillneverknowwhetherit

//wasafileerrororsomeothererror.

//Hereyouarehidinganexception.

//Inthiscasenoonewilleverknowthatanexceptionhappened.

return"";

}

}

不必在所有方法中捕捉一般异常。

不管它,让程序崩溃。

这将帮助你在开发周期发现大多数的错误。

你可以用应用程序级(线程级)错误处理器处理所有一般的异常。

遇到“意外的一般性错误”时,此错误处理器应该捕捉异常,给用户提示消息,在应用程序关闭或用户选择“忽略并继续”之前记录错误信息。

不必每个方法都用try-catch。

当特定的异常可能发生时才使用。

比如,当你写文件时,处理异常FileIOException。

别写太大的try-catch模块。

如果需要,为每个执行的任务编写单独的try-catch模块。

这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息如果应用程序需要,可以编写自己的异常类。

自定义异常不应从基类SystemException派生,而要继承于IApplicationException。

RNOP代码中统一采用以下语句抛出异常:

Metarnet.RNOP.Common.GlobalConst.ExceptionHandle.handleException(ex);

6.3调试与编译

为规范化调试与编译,同时为了防止多个工程分别使用不同的调试与编译目录导致相关数据文件版本不一致的问题,必须将工程编译与调试目录统一为以下地址:

调试目录:

盘符:

\RNOP_VSS\RNOP1.0\OUT\Debug\

盘符:

\RNOP_VSS\RNOP1.1\OUT\Debug\

编译目录:

盘符:

\RNOP_VSS\RNOP1.0\OUT\Release\

盘符:

\RNOP_VSS\RNOP1.1\OUT\Release\

设置方法如下:

打开VB.NET2005工程文件,双击【MyProject】,如图2所示:

图2打开工程属性

在打开的页面左侧点击【编译】,然后点击【生成文件输出路径】后的【浏览】按钮,在弹出的选择输出路径对话框中选择:

D:

\RNOP_VSS\RNOP1.0\OUT\Release\,如图3所示:

图3设置编译目录

点击页面左侧的【调试】,然后点击【工作目录】后的【…】按钮,在弹出的选择工作目录对话框中选择:

D:

\RNOP_VSS\RNOP1.0\OUT\Debug\,如图4所示:

图4设置调试目录

设置完毕后保存工程即可。

在发布时必须生成项目并发布编译路径下的文件,禁止发布调试路径下的文件。

第7章数据类型、ADO.NET、控件命名规则

7.1命名方法

简写+英文描述,英文描述首字母大写,适应于变量命名。

7.2数据类型命名规范

数据类型

数据类型简写

标准命名举例

Array

arr

arrShoppingList

Boolean                       

bln

blnIsPostBack

Byte                         

byt

bytPixelValue

Char                          

chr

chrDelimiter

DateTime                     

dtm

dtmStartDate

Decimal

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 人文社科 > 视频讲堂

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1