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文件所需要引用的属性进行设置,例如对于一个按钮
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
版权声明:本文标题:C#开发规范 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.freenas.com.cn/jishu/1705217434h477312.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论