1.命名
普遍要求:命名的时候,不允许使用汉字,拼音,拼音字母缩写形式;必须使用英语。
解决方案名称:后缀:Solution
OASolution
工程名称:
实体类工程:Model或解决方案名称.Model
数据访问类工程:DAL或解决方案名称.DAL
业务逻辑工程:BLL或解决方案名称.BLL
表示层工程:prj前缀
prjOA
类名称:
实体类:应该和数据库中的表名相关,一定是单数形式。
Books--->Book
数据访问类:实体类名称+Service
BookService
业务逻辑类:实体类名称+Manager
BookManager
表示层中的类:
窗体:frm+功能
frmAddBook
字段:应该使用骆驼命名法。
name
_name
_Name
属性:应该使用Pascal命名法。
Name
StudentName
BookTitle
方法:应该使用Pascal命名法;应该是动宾结构的:动词+名词。严禁使用名词作为普通方法的名称。
GetTable
事件:后缀:Event
SendLoginNameEvent
委托:应该采用Pascal命名法,后缀:Handler。
常用的关键字:
Add,Modify,Edit,Delete,Query,Count,List,Table,Row...
2.创建解决方案和工程
应该先创建解决方案,然后向解决方案中添加工程。
尽可能的将解决方案放置在某个磁盘的根目录。
应该在主菜单或上下文菜单中选择“添加项目”的方式添加工程。
将创建的工程中系统自动生成的类删除。(Program类除外)
对于所使用的每个类,必须自行添加。
在一个文件中尽可能的只放一个类型。
3.创建类型
尽可能的使用类,而不去使用结构。
尽可能的使用枚举,而不去使用常量。
如果非得用常量,那么可以优先考虑使用只读变量。
类,接口,委托,枚举,结构:通常应该公开。
如果一个类只在某个工程的内部被使用,那么应该使用internal.
私有的修饰符通常只在类的内部使用。
4.实体类:
应该包含:字段和属性。单数形式。可序列化。
字段:私有,骆驼,类型来自于表中的字段。
属性:公开,Pascal,类型来自于字段的类型。
在生成属性的时候应该从下往上。
5.数据访问类
应该包括基础的增加,修改,删除,查询的方法。
int Add+实体类名称(实体对象)
int Update+实体类名称(实体对象)
int Delete+实体类名称+By+主键属性的名称(主键属性的值)
实体类名称 Get+实体类名称+By+主键属性的名称(主键属性的值)
实体类的集合 Get+实体类名称+s()
不允许在上述方法中拼接SQL语句,必须采用调用存储过程的方式。
通用数据访问类:DBHelper
internal
int ExecuteNonQuery(存储过程名称,存储过程的参数集合):增加,修改,删除
DataTable GetTable(存储过程名称,存储过程的参数集合):查询
6.业务逻辑类
应该去调用对应的数据访问类中的方法。
int Add+实体类名称(实体对象)
int Update+实体类名称(实体对象)
int Delete+实体类名称+By+主键属性的名称(主键属性的值)
实体类名称 Get+实体类名称+By+主键属性的名称(主键属性的值)
实体类的集合 Get+实体类名称+s()
7.实体类,数据访问类,业务逻辑类:
应该与数据库中的表一一对应。
Books--->Book---->BookService---->BookManager
UserInfos--->UserInfo--->UserInfoService--->UserInfoManager
8.界面
窗体:frm+功能名称
标题
图标
边框样式:登录窗体不能更改大小。
状态:主窗体应该最大化。
首次出现的位置:登录窗体:屏幕中央。
最大化,最小化按钮,控制按钮:
默认确定按钮:AcceptButton
默认取消按钮:CancelButton
文本框:txt+名称:txtLoginId
不允许更改控件的高度,前景色,背景色,字体。
多行
密码字符
最大长度
在同一个窗体中,所有的文本框尽可能的大小一致。
根据功能的不同可以去处理文本框的键盘事件:KeyDown,KeyUp,KeyPress
按钮:btn+名称:btnOK
不允许更改控件的高度,前景色,背景色,字体。
对于按钮的宽度尽可能不去更改。
Text:功能的名称;应该有访问键(&一个字符),如果按钮单击后会打开一个新窗口,那么按钮的Text属性最后应该添加半个省略号。
Click事件:按钮被单击时激发的事件。
常用词:确定,取消,是,否,登录,退出,添加,修改,删除,开始,启动,暂停,停止,连接,中断,断开,打开,保存,浏览。
if ((e.KeyChar<'0' || e.KeyChar>'9') && e.KeyChar!=(char)8)
{
e.Handled = true;
}