资源描述
天强绩效管理系统
编程规范
一. 命名规范
1. 命名原则
a. Pascal Casing
属性每个单词的第一个字母大写,例如:BackColor
b. Camel Casing
除了第一个单词以外的每个单词的第一个字母大写,例如:backColor.
c. Upper Casing
如果缩写字母的个数小于或等于2,那么所有的缩写字母都大写。3个以上的字母
缩写采用Pascal Casing。例如:System.IO, System.Web.UI,
System.CodeDom。
2. 类的命名
a. 用Pascal Casing 命名规则
b. 谨慎的使用缩写
c. 不要使用任何的前缀(例如:C_GetList)
d. 不要使用下划线命名
e. 已所拥有的功能作为描述命名
3. 方法的命名
a. 用Pascal Casing 命名规则
b. 谨慎的使用缩写
c. 用动词或动词短语来命名(例如:public string GetAllList(){})
Data层的方法统一使用
Insert()
添加数据
Update()
修改数据
GetModel()
获取一条数据
GetModelList()
获取一个列表
Delete()
删除数据
d. 不要使用下划线命名
4. 属性的命名
a. 用Pascal Casing 命名规则
b. 谨慎的使用缩写
c. 用名词或名词短语来命名
d. 不要使用下划线命名
e. 可以考虑用类型名称作为属性名称(例如: public Color Color{})
5. 接口的命名
a. 用Pascal Casing 命名规则
b. 谨慎的使用缩写
c. 接口的前缀命名统一用I(方法本身的描述中有I开头的除外,例如:IGetPolicy)
d. 不要使用下划线命名
e. 接口名字用名词或者名词短语,或形容词来表述接口的行为
6. 参数的命名
a. 用Camel Casing 命名规则
b. 谨慎的使用缩写
c. 由本地的参数类型+描述性单词(例如:objCompanyList, strName, nCode)
d. 不要使用保留参数(Win32 API)
e. 参数的名字应该是描述性的
7. 变量的命名
a. 用Camel Casing 命名规则
b. 避免无意义的变量命名(如:string a = string.Empty(),但 for(int i=0;i<5;i++)除外)
c. 由本地的参数类型+描述性单词(例如:objCompanyList, strName, intCode)
d. 不要使用保留参数(Win32 API)
e. 参数的名字应该是描述性的
8. 大小写敏感
a. 不要出现两个只用大小写区分的命名空间
b. 不要出现两个只用大小写区分的参数
c. 不要出现两个只用大小写区分的同一命名空间的类型
d. 不要出现两个只用大小写区分的同一类型属性
e. 不要出现两个只用大小写区分的方法
9. 类库的命名
a. 要以系统的功能模块来划分类库,所有的类库的命名空间用KPI. 开头
b. 用Pascal Casing 命名规则
c. 不要使用下划线命名
d. 不能使用缩写
e. 类库分为公共引用层,实体层,逻辑层和数据层类库
f. 公共引用层命名 Common
g. 实体层命名 KPI.Model,例如:KPI.Model.Syetem
h. 逻辑层命名 KPI.Stategy. 例如:KPI.Stategy.System
i. 数据层命名 KPI.Data. 例如:KPI.Data.System
10. 文件的命名
a. 用Pascal Casing 命名规则
b. 公共引用层文件命名参考类的命名
c. Web网站内文件的命名 主要遵循 Pascal Casing 命名规则
d. 实体层文件命名分为 数据库实体,自定义实体, 条件实体。
e. 实体层数据库实体文件命名 数据库名称 + Model结尾命名
f. 实体层自定义实体文件命名 功能描述名词 + Define结尾命名
g. 实体层条件实体功能描述名词 + Condition结尾命名
h. 逻辑层文件命名 功能描述名词
i. 数据层文件命名 数据库名称
二. 编程规范
1. 代码注释
原则上平均每100行代码中要有20~30行注释,视程序复杂程度而定。
所有注释应使用中文。例如://添加一个用户函数
对于源文件和类,必须在注释中说明修改历史
具体规范参见项目根目录下的CodingSample.cs
2. 类和接口的注释
在<summary>中填写类的简要描述,<remarks>中填写类的一些注意事项。Histroy填写修改记录。
所有类和接口都要注释。类的操作注释由详细设计产物导出,编程人员补充完成从Title到History的部分。
例如:
/// <summary>
/// <see cref="IUserManager"/>接口定义了<see cref="User"/>实体类的增、删、改、读
/// (CRUD)方法,该接口的实现类将负责用户对象的简单管理。
/// </summary>
/// <remarks>
/// <see cref="IUserManager"/>接口仅定义<see cref="User"/>实体对象的CRUD操作方法,
/// 并没有定义关联用户对象与群组、组织机构等的操作,这些业务逻辑操作的方法定义在
/// 专门的关联操作接口<see cref="IUserGroupAssociator"/>及<see cref="IUserOrgAssociator"/>中。
/// </remarks>
/// Title: IUserManager
/// Copyright: ***** Software LTD.co Copyright (c) 2006
/// Company: *****有限公司
/// Designer: ***
/// Coder: 姜辉
/// Reviewer:
/// Tester: ***
/// Version: 1.0
/// History:
/// 2006-07-14 任维 [创建]
/// 2006-07-15 任维 [编码]
/// 2006-08-10 任维[修改] 根据外部用户需要,包装GetUserNameById()WEB服务方法.
3. 类成员变量的注释
类成员变量的注释如下例所示:
/// <summary>
/// 用户的名称
/// </summary>
public string username;
在声明前,利用.Net的格式来注释,原则上类的成员变量都要注释。
4. 方法的注释
/// <summary>
/// 根据指定的用户登录名、姓名及密码创建(注册)一个新用户(<see cref="User"/>)。
/// </summary>
/// <remarks>
/// 当满足如下任意情形之一时,创建用户的操作将会失败:
/// 1,指定的用户名在用户持久化存储中已存在
/// 2,指定的用户名不合法(空值,空字符串,多个空格,包含除字母及数字以外的非法字符,长度
/// 超过64)
/// 3,指定的用户密码不合法(空值,空字符串,多个空格,包含除字母及数字以外的非法字符,长
/// 度小于6位或大于位64)
/// 4,指定的用户姓名不合法(空值,空字符串,多个空格,长度大于位64)
/// </remarks>
/// <param name="loginName">用户的登录名,该属性必须唯一,如“zhangsan”</param>
/// <param name="username">用户的名称,该属性可以重复,如多个用户均可以叫“张三”</param>
/// <param name="password">用户登录的密码</param>
/// <returns>创建的新用户对象(<see cref="User"/>)</returns>
/// <exception cref="UserAlreadyExistsException">用户已经存在时所抛出的异常</exception>
/// <exception cref="InvalidLoginNameException">用户登录名不合法时所抛出的异常/exception>
/// <exception cref="InvalidUsernameException">用户姓名不合法时所抛出的异常</exception>
/// <exception cref="InvalidPasswordException">用户登录密码不合法时所抛出的异常<exception>
<summary>中填写该方法的主要功能描述,<remarks>中填写该方法的注意事项,<param>中填写方法的传入参数,以及各参数的意义。<returns> 填写函数返回值以及返回值的意义。注意在其中运用xml语法。所有的public及protected方法都要注释。
5. 程序中的注释
在程序中,采用 ”//”进行单行注释。
所有程序中的分支语句需要注释分支条件意义,循环语句需要注释循环的起始条件和中止条件。
// 满足支付条件
if (MeetPayCondition())
…
// 循环遍历数组
for ( int i = 0; i < Array.Count; i++ )
…
6. 创建Model的规范
系统中所有要创建Model实体的地方必须是以下格式 obj实体名Model 格式。
例如要创建一个User对象的实体
UserModel objUserModel=new UserModel;
objUserModel.UserName=”张三”;
7. 关于值的判断比较
(1)布尔值
布尔值的判断比较不允许直接与false或者true进行比较,更不能直接与0或者1进行比较,例如if(bFlag==0) 或者if(bFlag==false)
应该遵循以下标准规则
if(bFlag) 判断变量为真
if(!bFlag) 判断变量为假
(2)整形变量
整形变量与0的比较应采用== 或者!= 严禁整形变量与0比较时采用布尔值的比较方式.
(3)浮点型的变量
严禁浮点型变量用==或者!=进行比较,浮点型的变量涉及到位数.正确做法是采用>=或者<=进行比较
三. 通用规范
1. 判断与循环的注释
对于大段的(超过20行)判断、循环语句,要加注释,对于判断语句(如if,switch),要说明判断的条件和程序的走向。对于循环语句(如while,do while,for),要说明循环继续和终止的条件。
当有循环嵌套时,尽量把大循环放在内层.
2. 缩写规范
一个项目中用到的同一词语的缩写要求完全统一,如”Project”缩写为”pjt”,则不准用其它的缩写,如”Prjt”或”Pjct”,并且区分大小写,即”PJT”也不能再用于表示”Project”。
3. 汉语拼音
尽量不要使用汉语拼音的声母缩写来做命名。如”Py”用来表示”拼音”会有很多的歧义。
4. 神秘的数字
无论用何种语言编程,都不要出现神秘的数字,如下代码应视为违反本规范:
int n;
n = 128;
…
对于程序中要用到的常数,在专门的文件中进行定义,定义方法统一用大写的英文,例如:
public final int FILE_NAME_MAX_LENTH = 128;…
也可以写入到独立的配置文件中,在程序中读出其中的数值。
如果仅仅是某个类中所使用的话,就作为常量写入类中,例如:
private const string SIGN_STATUS = “50”;
对于数据类型为int型的这些常量,尽量使用枚举类型来处理这些神秘数字。
在程序中的数字也并不一定属于神秘的数字,以下情况是允许的:
1, 索引数字,比如数组访问,数据库字段读取dataReader.GetString(2);
2, 单元测试代码中用到的数字。
5. ”{}”的使用
相关联的“{“和”}”要么处于同一行,要么处于同一列。只有一行的逻辑代码,可以省略{}
四. 常用命名前缀列表
1. 服务器控件命名(常用)
控件类型
名称前缀
样例
Label
lbl
lblCurrentPage
Button
btn
btnAuditProject
TextBox
txt
txtDraftId
LinkButton
lbn
lbnCreateDraftForm
ImageButton
ibn
ibnCreateDraftForm
HyperLink
hlk
hlkPageLink
DropDownList*
ddl
ddlDraftStatus
CheckBox
chk
chkCheck
RadioButton
rbn
rbnChoiceOne
Image
img
imgPicture
HiddenField
hid
hidCreateDraftForm
Literal
lit
litDeviceGridWiew
FileUpload
fud
fudChooseFile
Panal
pnl
pnlEdit
2. HTML控件命名
控件类型
名称前缀
样例
<span>
spn
spnMessage
<div>
div
pnlInfo
<table>
tb
tbDraftId
<tr>
tr
trCreateDraftForm
<td>
td
tdCreateDraftForm
<a>
a
hlkPageLink
<input type=’text’>
txt
ddlDraftStatus
<input type=’checkbox’>
chk
cbxCheck
<input type=’radio’>
rbn
rbnGroup
<input type=’button’>
btn
imgPicture
<input type=’submit’>
btn
hidCreateDraftForm
<input type=’image’>
ibn
litDeviceGridWiew
<input type=’file’>
fud
fudChooseFile
<select>
ddl
palEdit
<textarea>
txt
3. 数据类型命名
数据类型
名称前缀
样例
string
str
spnMessage
int
int 或者 n
pnlInfo
decimal
dec
tbDraftId
Object
obj
sbyte
sb
byte
bt
uint
ui
long
l
ulong
ul
float
f
double
d
bool
b
decimal
dec
数据控件缩写规范
数据类型
名称前缀
样例
Connection
con
conNorthwind
Command
cmd
cmdReturnProducts
Parameter
parm
parmProductID
DataAdapter
dad
dadProducts
DataReader
dtr
dtrProducts
DataSet
dst
dstNorthWind
DataTable
dtbl
dtblProduct
DataView
dvw
dvwFilteredProducts
DataRelation
drel
drelMasterDetail
DataColumn
dcol
dcolProductID
DataRow
drow
drowRow98
4. 行业常用词命名规范
4.1 公共及系统管理
中文
英文
公司
Company
用户
User
登录
Login
手机
Mobile
电话
Tel
传真
Fax
配送
Delivery
联系人
Contactor
推荐人
Recommender
配送
Delivery
支付
Pay
保险
Insurance
备注
Remark
政策
Policy
银行
Bank
银行帐号
BankAccount
航讯支付
HXPay
锁定
Lock
创建时间
CreateTime
权限
Right
短消息
SMS
上级
Parent
下级
Child
上级公司
ParentCompany
下级公司
ChildCompany
上级返款
ParentFare
下级返点
ChildDiscount
下级返款
ChildFare
利润
Profit
实发工资
NetPay
4.2 业务逻辑管理
中文
英文
考核
Assessment
绩效
Performance
指标
Indicators
4.3 帐务管理
中文
英文
账单
Bill
账户
Account
授信
Credit
押金
Deposit
审核
Auditing
申请
Apply
统计
Static
4.4 系统管理
中文
英文
部门
Departments
岗位
Position
展开阅读全文