您的位置:首页 > 其它

写给刚入门的兄弟们,我常用的几个字段命名参考,大家都这么命名,我们写程序就更规范了

2009-09-11 13:43 513 查看
最理想的状态就是,大家的习惯是一致的,这样设计出来的东西别人好理解,好接手,更容易搞明白你的设计是什么意图,别人想在你的管理软件上做接口也更容易一些,集成多个软件系统也容易一些。

我们中国人的一个特色:谁提出个什么提议,大家都觉得不好,那你让他来吧,他更不行,就是你的这个不行,行的还没有,还没诞生,还在脑海里,这个坏习惯影响了严重我们的团队作战能力,反正我就不服,让我弄我也不会,就是你这个不行,哪里不行,我也说不出来,如何更行没有,那这个问题如何解决?多人协调配合方面,我们跟日本人、韩国人的差距很大,上大学时就被深深的影响过韩国人的团结。

有时候学会放弃是最大的进步,能提高效率,我比较支持秦始皇、成吉思汗、希特勒,都是统一方面的强硬派。

废话少说:
我经常用的字段有如下:需要注意的一点就是,你存的是ID,还是FullName?还是Code 应该区分开来比较好。
ID:主键,每个实体都有他唯一的标识码,就像我们的***号码,一般建议采用单主键,好做外键,设置数据库主外键关联约束。
Code:编号,可以不输入,但是不能重复,我又时候会用程序判断,由时候会建立唯一索引,这样也自动不能重复了。
UserName:登录名,用数子或者拼音,登录时方便输入,例如“jirigala”。
FullName:姓名,这是真实的姓名,例如“吉日嘎拉”。

CompanyID:这个数据当时是归属于哪个公司的,因为员工是有可能换工作,调公司的。
DepartmentID:这个数据当时是归属于哪个部门的。
WorkgroupID:这个数据当时是归属于哪个工作组的。
StaffID:这个数据当时是归属于哪个员工的。

Enabled:数据是否已生效,很可能输入的数据经过审核后才会生效的。
DeleteMark:数据是否被删除了,我不能把数据真删了,那就找不回来了。
AuditStatus:审核状态,审核流程放在另外表里,只是状态,写在这个表里了,按严格来说,状态也不应该放在这个表里,应该放在工作流表里。

Description:设计的字段再多,也永远满足不了客户不断在变化的需求,多弄一个备注字段,所有放不下的,没地方放的内容,全部可以赛在这个字段里了,否则你就是设置1000个字段,可能会出现第10001个需求。SortCode:

CreateUserID:这个数据是谁创建的?把主键记录起来,因为直接记录姓名,可能会有姓名重复的可能性,例如在内蒙古我的名字重复的概率就高很多。
CreateUserRealname:创建人的姓名,虽然有些冗余,但是在列表里显示数据很方便,现在硬盘也大,冗余一些也无所谓。
CreateDate:这个数据是什么时候被建立的,出了事情还能知道是什么时候搞出来的,公安是非常重视,什么时候人被咔嚓了,最好是能详细到几点,在什么地点发生的。
ModifyUserID:谁修改了数据?
ModifyUserRealname:谁?
ModifyDate:什么时间修改的数据?

审核状态我一般分,若觉得那里不妥或者命名有错的,我马上修改:




Code
1

//------------------------------------------------------------
2

// All Rights Reserved , Copyright (C) 2009 , Jirisoft , Ltd.
3

//------------------------------------------------------------
4


5

using System;
6


7

namespace DotNet.Common.Utilities
8





{
9



/**//// <summary>
10

/// AuditStatus
11

/// 审核状态。
12

///
13

/// 修改纪录
14

///
15

/// 2009.09.04 版本:1.0 JiRiGaLa 重新调整代码的规范化。
16

///
17

/// 版本:1.0
18

///
19

/// <author>
20

/// <name>JiRiGaLa</name>
21

/// <date>2009.09.04</date>
22

/// </author>
23

/// </summary>
24



public enum AuditStatus 审核状态#region public enum AuditStatus 审核状态
25

public enum AuditStatus
26





{
27



/**//// <summary>
28

/// 01 递交成功
29

/// </summary>
30

SubmitOK = 1,
31


32



/**//// <summary>
33

/// 02 开始审核
34

/// </summary>
35

StartAudit = 2,
36


37



/**//// <summary>
38

/// 03 待审核
39

/// </summary>
40

WaitForAudit = 3,
41


42



/**//// <summary>
43

/// 04 审核通过
44

/// </summary>
45

AuditPass = 4,
46


47



/**//// <summary>
48

/// 05 已驳回
49

/// </summary>
50

AuditReject = 5,
51


52



/**//// <summary>
53

/// 06 审核结束
54

/// </summary>
55

AuditComplete = 6,
56


57



/**//// <summary>
58

/// 07 撤销失败
59

/// </summary>
60

QuashFail = 7
61

}
62

#endregion
63

}
64


65


我都会把表结构定义也成一个文件,可以参考代码,当然这个是表结构设计好后用代码生成器生成的,手写太累:




Code
1

//------------------------------------------------------------
2

// All Rights Reserved , Copyright (C) 2009 , Jirisoft , Ltd.
3

//------------------------------------------------------------
4


5

using System;
6


7

namespace DotNet.Common.Model
8





{
9



/**//// <summary>
10

/// BaseUserTable
11

/// 用户表结构定义
12

///
13

/// 修改纪录
14

///
15

/// 2009.09.11 版本:4.5 JiRiGaLa 增加 AuditStatus。
16

/// 2008.10.02 版本:4.4 JiRiGaLa 增加 Duty、Title。
17

/// 2008.09.28 版本:4.3 JiRiGaLa 多余字段去掉。
18

/// 2008.09.27 版本:4.2 JiRiGaLa CanVisit 增强,后来又去掉了。
19

/// 2008.02.26 版本:4.1 JiRiGaLa 要求查询账户的在线状态,及该登录账户的电脑IP,MAC信息。
20

/// 2007.01.05 版本:4.0 JiRiGaLa 重新整理代码。
21

/// 2006.12.15 版本:3.0 JiRiGaLa 重新整理代码。
22

/// 2006.11.23 版本:2.0 JiRiGaLa 结构优化整理。
23

/// 2006.02.05 版本:1.1 JiRiGaLa 重新调整代码的规范化。
24

/// 2006.02.02 版本:1.0 JiRiGaLa 书写格式进行整理。
25

/// 2005.01.23 版本:1.0 JiRiGaLa 代码整理。
26

///
27

/// 版本:4.4
28

///
29

/// <author>
30

/// <name>JiRiGaLa</name>
31

/// <date>2008.10.02</date>
32

/// </author>
33

/// </summary>
34

[Serializable]
35

public class BaseUserTable
36





{
37



/**//// <summary>
38

/// 表名
39

/// </summary>
40

public static String TableName = "Base_User";
41


42



/**//// <summary>
43

/// 代码
44

/// </summary>
45

public static String FieldID = "ID";
46


47



/**//// <summary>
48

/// 编号
49

/// </summary>
50

public static String FieldCode = "Code";
51


52



/**//// <summary>
53

/// 用户名
54

/// </summary>
55

public static String FieldUsername = "Username";
56


57



/**//// <summary>
58

/// 姓名
59

/// </summary>
60

public static String FieldRealname = "Realname";
61


62



/**////<summary>
63

/// 性别
64

///</summary>
65

public static String FieldSex = "Sex";
66


67



/**////<summary>
68

/// 出生日期
69

///</summary>
70

public static String FieldBirthday = "Birthday";
71


72



/**////<summary>
73

/// 手机
74

///</summary>
75

public static String FieldMobile = "Mobile";
76


77



/**////<summary>
78

/// QQ号码
79

///</summary>
80

public static String FieldOICQ = "OICQ";
81


82



/**////<summary>
83

/// 家庭住址
84

///</summary>
85

public static String FieldHomeAddress = "HomeAddress";
86


87



/**//// <summary>
88

/// 默认角色
89

/// </summary>
90

public static String FieldRole = "Role";
91


92



/**//// <summary>
93

/// 公司
94

/// </summary>
95

public static String FieldCompany = "Company";
96


97



/**//// <summary>
98

/// 部门
99

/// </summary>
100

public static String FieldDepartment = "Department";
101


102



/**//// <summary>
103

/// 工作组
104

/// </summary>
105

public static String FieldWorkgroup = "Workgroup";
106


107



/**//// <summary>
108

/// 岗位
109

/// </summary>
110

public static String FieldDuty = "Duty";
111


112



/**//// <summary>
113

/// 职称
114

/// </summary>
115

public static String FieldTitle = "Title";
116


117



/**//// <summary>
118

/// 用户密码
119

/// </summary>
120

public static String FieldUserPassword = "UserPassword";
121


122



/**//// <summary>
123

/// 电子邮件
124

/// </summary>
125

public static String FieldEmail = "Email";
126


127



/**//// <summary>
128

/// 系统语言选择
129

/// </summary>
130

public static String FieldLang = "Lang";
131


132



/**//// <summary>
133

/// 系统样式选择
134

/// </summary>
135

public static String FieldTheme = "Theme";
136


137



/**//// <summary>
138

/// 第一次访问时间
139

/// </summary>
140

public static String FieldFirstVisit = "FirstVisit";
141


142



/**//// <summary>
143

/// 上一次访问时间
144

/// </summary>
145

public static String FieldPreviousVisit = "PreviousVisit";
146


147



/**//// <summary>
148

/// 最后访问时间
149

/// </summary>
150

public static String FieldLastVisit = "LastVisit";
151


152



/**//// <summary>
153

/// 登录次数
154

/// </summary>
155

public static String FieldLoginCount = "LoginCount";
156


157



/**//// <summary>
158

/// 是否职员
159

/// </summary>
160

public static String FieldIsStaff = "IsStaff";
161


162



/**//// <summary>
163

/// 有效[是否锁定帐户同一个功能]
164

/// </summary>
165

public static String FieldEnabled = "Enabled";
166


167



/**//// <summary>
168

/// 当前记录的审核状态
169

/// </summary>
170

public static String FieldAuditStatus = "AuditStatus";
171


172



/**//// <summary>
173

/// 是否显示
174

/// </summary>
175

public static String FieldIsVisible = "IsVisible";
176


177



/**//// <summary>
178

/// 是否在线
179

/// </summary>
180

public static String FieldUserOnLine = "UserOnLine";
181


182



/**//// <summary>
183

/// IP地址
184

/// </summary>
185

public static String FieldIPAddress = "IPAddress";
186


187



/**//// <summary>
188

/// MAC地址
189

/// </summary>
190

public static String FieldMACAddress = "MACAddress";
191


192



/**//// <summary>
193

/// 当点登录标示
194

/// </summary>
195

public static String FieldSUID = "SUID";
196


197



/**////<summary>
198

/// 删除
199

///</summary>
200

public static String FieldDeleteMark = "DeleteMark";
201


202



/**//// <summary>
203

/// 备注
204

/// </summary>
205

public static String FieldDescription = "Description";
206


207



/**//// <summary>
208

/// 密码提示问题代码
209

/// </summary>
210

public static String FieldQuestion = "Question";
211


212



/**//// <summary>
213

/// 密码提示答案
214

/// </summary>
215

public static String FieldAnswerQuestion = "AnswerQuestion";
216


217



/**//// <summary>
218

/// 排序码
219

/// </summary>
220

public static String FieldSortCode = "SortCode";
221


222



/**//// <summary>
223

/// 创建者代码
224

/// </summary>
225

public static String FieldCreateUserID = "CreateUserID";
226


227



/**//// <summary>
228

/// 创建时间
229

/// </summary>
230

public static String FieldCreateDate = "CreateDate";
231


232



/**//// <summary>
233

/// 最后修改者代码
234

/// </summary>
235

public static String FieldModifyUserID = "ModifyUserID";
236


237



/**//// <summary>
238

/// 最后修改时间
239

/// </summary>
240

public static String FieldModifyDate = "ModifyDate";
241

}
242

}
由于我们设计水平有限,表结构会经常修改来修改去,这样都定义了,修改表字段名,我的程序就在编译阶段知道都影响了哪里了,我就不太担心表结构变来变去了,当然是在适当的范围内,总比经不起折腾好点吧。

还有就是,程序不变,表结构有变化,需要集成到现有的系统表结构上,那可以考虑采用视图方式或表结构影射方式例如




Code
1

<?xml version="1.0" encoding="utf-8" ?>
2

<sqlMap>
3

<resultMaps>
4

<resultMap id="BasePermissionEntityResult" class="BasePermissionEntity">
5

<result property="ID" column="ID" />
6

<result property="ParentID" column="ParentID" />
7

<result property="Code" column="Code" />
8

<result property="FullName" column="FullName" />
9

<result property="SortCode" column="SortCode" />
10

<result property="IsScope" column="IsScope" />
11

<result property="Enabled" column="Enabled" />
12

<result property="AllowEdit" column="AllowEdit" />
13

<result property="AllowDelete" column="AllowDelete" />
14

<result property="Description" column="Description" />
15

<result property="CreateUserID" column="CreateUserID" />
16

<result property="CreateDate" column="CreateDate" />
17

<result property="ModifyUserID" column="ModifyUserID" />
18

<result property="ModifyDate" column="ModifyDate" />
19

</resultMap>
20

</resultMaps>
21

</sqlMap>
很多人有一个坏习惯,软件用都不用就说不好用,所以我把用户什么时候第一次用的,最后一次什么时候用的,登录了几次我都记录下来,可以跟别人对账,一次都没用过,你怎么知道我的软件不好用?就用了几次,你就知道了?神仙啊?

我都说了,最好的程序是经得起折腾,你有水平就说我哪个字段应该修改为什么名字,如何修改,为什么不对,我的程序好处就是经得起折腾,经得起修改。

我最讨厌你参考RBAC吧,RBAC里有个鬼啊,啥也没有的空洞理念啊,你让我参考啥?你有水平就直接说,我应该哪个字段修改什么名字,为是什么?或者你干脆告诉我,找个资深老美设计师来改一下就不就可以了。
为什么我们会为公司的信息应用系统分散而零乱而发愁?就是因为我们连达成统一的用户表的这么第一步都很难,看下面的回复,这个表统一难道真的很不重要吗?那什么才重要?研发操作系统才重要吗?

将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: