admin 管理员组

文章数量: 887021


2024年1月14日发(作者:crontab启动)

C#开发规范

1. 结构设计

1.1 原则

所有系统(模块)结构设计均遵循三层结构,即:数据层、中间层和表现层,以及贯穿的数据实体。

1.2 系统命名

系统命名采用预先约定的名称,名称应以简单明了为原则确定。

1.3 模块命名

每个模块可以定义自己的简称,简称也应以简单明了为原则确定。简称一般不与系统的名称重复。

1.4 解决方案

解决方案一般与已定义模块关联,命名采用模块的简称。

1.5 项目结构

依据2.1的原则,解决方案中至少应包含以下内容:

1、 原则:命名规则按(简称+“.”+功能识别),当涉及到数据库时,命名规则按(简称+“.”+功能识别+数据库识别)或(简称+“.”+功能识别+“.”+数据库识别),数据库识别主要是区分对应不同数据库的操作,为便于系统整合,表现层命名可以省略简称,只保留功能识别。

2、 数据层项目:命名规则可以为(简称+“.DAL”+数据库识别)。如:Server、cle。

3、 中间层项目:命名规则可以为(简称+“.BLL”),代表业务逻辑层。如:。

4、 表现层项目:命名规则可以为(简称+“.Web”)或(简称+“.Form”),分别代表B/S结构和C/S结构的页面和窗体展示。如:,也可以省略简称,如:Web。

5、 数据实体项目:命名规则可以为(简称+“.Model”),如:。

6、 其它:除了上述基本项目外,可能系统还包含支持项目,如:配置管理、对象工厂、对外接口及工具等等。按1所述原则命名。

标题:DotNet设计及开发规范 Page 1 of 9

1.6 示例

1.7 类命名

原则:类的命名要依据其所在项目的命名方式,一般规则为:项目识别+类含义,实体规则为:类含义+Info。

项目识别前缀可以自定义,但要和同一解决方案中的其它项目区别,原则上不允许多个项目使用同一个项目识别前缀。

数据层:以D为项目识别

中间层:以B为项目识别

实体层:以M为项目识别

接口层:以I为项目识别

2. 开发命名规范

2.1 全局变量

命名规则:g+变量含义。如:gDateFormat、gConfigFile。

2.2 类成员变量

命名规则:m+变量含义。如:mUserName、mUserCode。

2.3 局部变量

命名规则:tmp+变量含义。如:tmpRowIndex、tmpColIndex。

标题:DotNet设计及开发规范 Page 2 of 9

2.4 参数变量

命名规则:var+变量含义。如:GetUserInfo(int varUserID)。

2.5 循环变量

命名规则:单字母,小写。如:i、j、k。

2.6 自定义异常

命名规则:exp+异常含义。如:expFileNotFound、expCanNotOpenFile。

2.7 属性

命名规则:p+属性含义。如:pUserName、pUserCode。

2.8 方法

命名规则:动词+对象。如:GetUserInfo()、SetCurrentUserInfo()。

2.9 UI控件命名

2.9.1 Windows控件

控件类型

Label

LinkLabel

Button

TextBox

MainMenu

CheckBox

RadioButton

GroupBox

PictureBox

Panel

DataGrid

命名前缀

lbl

llbl

btn

txt

mnu

chk

rdb

grb

pic

pnl

dgd

示例

lblInfo

llblUpdate

btnSubmit

txtName

mnuMain

chkSelectSingle

rdbSelectAll

grbOptions

picPhoto

pnlDetail

dgdPlanList

标题:DotNet设计及开发规范 Page 3 of 9

ListBox

CheckedListBox

ComboBox

ListView

TreeView

TabControl

DateTimePicker

MonthCalender

HScrollBar

VScrillBar

Timer

Splitter

DomainUpDown

NumericUpDown

TrackBar

ProgressBar

RichTextBox

ImageList

ToolBar

StatusBar

lst

clst

cbo

lvw

tvw

tab

dtp

mon

hsb

vsb

tmr

spl

dud

nud

tkb

prb

rtxt

ilst

tlb

stb

lstSelectPersons

clstMultiSelectPersons

cboRegion

lvwUserDetailList

tvwStruct

tab

dtpPlanDate

monHandleMonth

hsbGrid

vsbGrid

tmrAutoUpdate

splMain

dudMain

nudAge

tkbSoundValue

prbCopyProcess

rtxtNote

ilstApplication

tlbGeneral

stbShowCustom

2.9.2 Web控件

控件类型

Label

TextBox

Button

LinkButton

ImageButton

HyperLink

DropDownList

ListBox

DataGrid

命名前缀

lbl

txt

btn

lbtn

ibtn

hyp

ddl

lst

dgd

示例

lblInfo

txtName

btnSubmit

lbtnSubmit

ibtnSubmit

hypMainUrl

ddlRegion

lstUsers

dgdPlanList

标题:DotNet设计及开发规范 Page 4 of 9

DataList

Repeater

CheckBox

CheckBoxList

RadioButton

RadioButtonList

Image

Panel

PlaceHolder

Calender

AdRotator

Table

GridView

Menu

TreeView

dgl

rpt

chk

clst

rdb

rlst

img

pnl

phd

cld

art

tab

gv

menu

tv

dglPlanList

rptDetail

chkChangeRed

clstColorSelect

rdbChangeColor

rlstFontSelect

imgPhoto

pnlControl

phdDetail

cldWriteDate

artExtendShow

tabMainFilter

gvCart

menuMain

tvDept

3. 程序编写原则

参考:《IDesign C# Coding Standard v1.81》

1. 使用c#预定义的类型,而不是使用system命名空间中的别名。如:采用object不用Object,采用string不用String,采用int不用Int32。

2. 避免使用类的全称,而是采用using语句。如:using System。

3. 将所有framework命名空间名放在一起,后面放自定义或第三方的命名空间名。如:

using system;

using tions;

using ;

4. 所有成员变量应该定义在前面,和属性或方法间空开一行。

5. 局部变量的定义尽可能靠近它的初次使用。

6. 仅对本来就是常量的值使用const修饰符。

7. 避免对只读变量使用const修饰符。在此情况下,采用readonly修饰符。

8. 严格遵守缩进格式。缩进采用tab键控制,大小为4个空格。

9. 注释缩进和其注释的代码在同一层次。

10. 所有注释要经过检查。

11. 左大括号总是放在新行中。

标题:DotNet设计及开发规范 Page 5 of 9

12. 避免在一个文件中放多个类。

13. 避免超过5个参数的方法。使用结构传递多个参数。

14. 每行应该不超过80个字符。

15. 避免将错误代码作为方法的返回值。

16. switch语句中总是使用default用于加断言。

17. 除非在switch语句中跳转,永远不要用goto语句。

18. 构建一个长字符串时,使用stringbuilder,不要用string。

19. 发布时可能修改的字符串永远不用硬编码,例如连接字符串。

20. 不用提供public或protected成员变量,而是使用属性。

21. 总是使用从0开始的数组。

22. 避免在布尔条件语句中调用函数。赋值到局部变量并检查它们的值。

23. 避免使用?:条件算符。

24. if语句总是使用括号,即使它包含一句语句。

25. 避免对枚举提供明确的值。避免对枚举指定类型。

4. 数据库设计

4.1 原则

数据库中各对象命名按命名规则进行,以最简化方式表述其含义。

4.2 数据库命名

数据库名称以约定的名称为准,可以采用系统的简称。不允许使用中文命名。

4.3 表命名

命名规则:t_+模块简称+_表含义。如:t_qc_MonthReport、t_im_HandleHistory。其中模块简称依据2.3 模块命名规则确定。

4.4 存储过程

命名规则:sp_+模块简称+_存储过程含义。如:sp_qc_GetCurrentUser、sp_im_GetLastPlanRecord。其中模块简称依据2.3 模块命名规则确定。

标题:DotNet设计及开发规范 Page 6 of 9

4.5 视图

命名规则:v_+模块简称+_视图含义。如:v_qc_UserList、v_im_LastPlanList。其中模块简称依据2.3 模块命名规则确定。

4.6 自定义函数

命名规则:f_+模块简称+_函数含义。如:f_qc_CombineReasonString、f_im_GetPlanTable。其中模块简称依据2.3 模块命名规则确定。

4.7 索引

命名规则:idx_+表名+_索引含义。如:idx_t_qc_result_HandleReason、idx_t_im_plan_HandlePlanDate。创建主键时自动生成的索引不适用此规则。

4.8 触发器

命名规则:tri_+表名+_触发器含义。如:tri_t_qc_result_DeleteReason、tri_t_im_plan_UpdatePlanDate。创建主键时自动生成的索引不适用此规则。

5. Web界面开发控件样式规范

5.1 控件CssClass

TEXT文本框,可编辑的样式为txtWrite

TEXT文本框,只读的样式为txtRead

Button按钮,样式为btn

Tab页选中按钮,样式为TabSel

Tab页未选中按钮,样式为TabDef

DropdownList下拉框,样式为ddl

Panel样式为pnl

作为标题Table样式为title

5.2 控件皮肤

TreeView皮肤为tv1

GridView皮肤为gv1

标题:DotNet设计及开发规范 Page 7 of 9

6. 本地资源文件:

6.1 资源文件的命名

对每一个aspx文件都要建立若干个与之对应的本地资源文件,资源文件的名称必须与aspx的文件名相对应,例如对的中文资源文件可以命名为,对应的英文资源文件可以命名为;对于en-US、zh-CN等命名最好参照IE的语言命名规则,在IE的Internet属性的语言项可以查询到

6.2 Web文件资源设定

本地资源文件必须对aspx文件所需要引用的属性进行设置,例如对于一个按钮显示文本,在中文资源文件要添加一条记录(名称:,值:添加),在英文资源文件添加一条记录(名称:,值:Add)

3、这样在aspx页面上引用的btnAdd中添加一些属性

Text="" meta:resourcekey="btnAdd" />;在页面要注册一些信息当前使用的语言信息,例如(UICulture="auto" Culture="auto"),auto代表了当前IE的所使用的默认第一个语言,也可以设置问刚刚建立的几个本地资源文件的语言名称,例如(UICulture="zh-CN"

Culture="zh-CN")

6.3 设置每个文件的资源类型

在每个文件中增加如下代码

#region 设置语言

protected override void InitializeCulture()

{

t acc = (t)Session["CURRENT_USER"];

string strLangs = "";

if (acc != null)

{

strLangs = ;

}

UICulture = strLangs;

Culture = strLangs;

tUICulture = new CultureInfo(strLangs);

tCulture = SpecificCulture(strLangs);

lizeCulture();

}

#endregion

标题:DotNet设计及开发规范 Page 8 of 9

#region 设置主题

protected void Page_PreInit(object sender, rgs e)

{

t acc = (t)Session["CURRENT_USER"];

string strTheme = "";

if (acc != null)

{

strTheme = ;

}

= strTheme;

}

#endregion

标题:DotNet设计及开发规范 Page 9 of 9


本文标签: 命名 规则 使用