C#OOP之十六 开发常用之各种规范参考
来源:互联网 发布:大众软件电子版 编辑:程序博客网 时间:2024/06/01 09:23
附录一.Windows控件缩写规范
数据类型
数据类型简写
标准命名
Lable
Lbl
LblMessage
LinkLable
llbl
LlblToday
Button
btn
Btnsave
TextBox
Txt
TxtName
MainMenu
mmnu
MnnuFile
CheckBox
chk
chkStock
RadioButton
rbtn
RbtnSelected
GroupBox
gbx
GbxMain
pictureBox
pic
PicImage
Panel
pnl
PnlBod
DataGrid
dgrd
DgrdView
ListBox
cbo
CboMenu
TreeView
tvw
Tvw
TabControl
tctl
tctlSelected
DataTimePicker
dtp
dtpStartData
HscrollBar
hsb
hsbImage
VscrollBar
vxb
vsbImage
Timer
tmr
tmrCount
ImageList
ilst
ilstImage
ToolBar
Tlb
tlbManage
StatusBar
stb
stbFootPrint
OpenFileDialog
odlg
odlgFile
SaveFileDialog
sdlg
sdlgSave
FoldBrowserDialog
fbdlg
fgdlgBrwser
FontDialog
fdlg
fdlgFoot
ColorDialog
cdlg
cdlgColr
PrintDialog
pdlg
pdlgPrints
Web控件缩写规范
数据类型
数据类型简写
标准命名
AdRotator
Asrt
Example
Button
Btn
BtnSubimit
Calendar
Cal
calMettingDatas
CheckBox
Chk
ChkBlue
CheckBoxList
Chkl
chkFavClors
CompareValidator
Valx
valxDBCheck
DataGrid
Dgrd
DgrdTitles
DataList
Dlst
DlstTitle
DropdownList
Drop
dropCountries
HyperLink
Lnk
LnkDetail
Image
img
ImgAuntBetty
ImageButton
ibtn
IbtnSubmit
Label
Lbl
LblResult
LinkButton
lbtn
LbtnSubmit
ListBox
Lst
LstCountries
Panel
pnl
pnlForm2
PlaceHolder
Plh
PlhFormContens
RadioButton
Rad
RadFemale
RadioButtonList
radl
RadlGer
RangValidator
valg
ValgAge
Regular Expression
vale
valeEmail Vaildator
Repeater
Rpt
ValrFirstName
Table
Tbl
TblCountryCodes
TableCell
tblc
TblcGermany
TableRow
tblr
TblrCountry
TextBox
Txt
TxtFirstName
ValidationSummary
vals
valsFormError
XML
xmlc
XmlcTranformResults
数据库对象缩写规范
数据类型
数据类型简写
标准命名举例
Connection
Con
ConNorthwind
Command
Cmd
CmdReturnProducts
Parameter
Parm
ParmProductID
DataAdapter
Dap
DapProducts
DataReater
Dtr
DtrProducts
DataSet
Ds
DsNorthWind
DataTable
Dt
DtProduct
DataRow
Drow
DrowRow
DataColumn
Dcol
DcolProductID
DataRelation
drl
DrlMasterDetail
DataView
dvw
DvwFilteredProducts
数据类型缩写规范
数据类型
数据类型简写
标准命名举例
Bool
b/is
IsVisable
Float
F
FPrice
Double
D
DPrice
Unit
U
Uage
Int
I
iNumber
Char
Ch
ChCode
Byte
Bt
BtImages
String
Str
StrName
Struct
St
stStudents
Windows
Wnd
WndMain
AttayList
Lst
LstStudents
Array
Arr
ArrStudents
Hashtable
Ht
HtStudents
常用类型命名规范总结
类型
命名规范
注意事项
事例
类或结构
Pascal
首字符大写
HttpContext
接口
Pascal
加前缀 I
IdataAdapter
枚举名
Pascal
首字符大写
CommandType
枚举值
Pascal
首字符大写
CommandType.Text
事件
Pascal
首字符大写
SelectedINdexChanged
自定义异常
Pascal
加后缀Exception
ArgumentException
公共字段
Pascal
首字符大写
Int32.MaxValue
方法
Pascal
首字符大写
ToString
命名空间
Pascal
首字符大写
System.Xml
属性
Pascal
首字符大写
BackColor
保护或私有字段
Camel
首字符小写
MyVariable
参数
Camel
首字符小写
cmdText
附录二.命名规范
一.类
1.1..使用Pascal规则命名类名,即首字母要大些.。
如:
Class person
ClassBmpFileStream
1.2.使用能够反映类功能的名词或名词短语命名类。
如:
public classFileStream
public class Button
public classstring
1.3.不要使用“_”,”C”,”I”等特定含义前缀。
如:
class –ManagerSystem
classCManagerSystem
classImanagerSystem
1.4.自定义异常类应以Exception结尾。
如:
Public class EmailException:Exception
{
//类体
}
1.5.文件名要能反映类的内容,最好是和类同名。
二、类字段
2.1.用camel规则来命名类成员变量名称,即首单词(或单词缩写)小写。
如:
class Student
{
string stuName;
string stuNo;
string password;
}
2.2.类字段变量名前加”_”前缀。
如:
Class student
{
String_stuName;
String _stuNo;
}
2.3坚决在普通变量前加”m_”前缀(这是VC老命名规则)。
如:
Class Student
{
sting m_stuName;
sting m_stuNo;
}
三. 方法
3.1方法采用Pascal规则,第一个字符要大写。
如:
public void DoubleVaule(){…}
public void Show(){…}
3.2方法名应使用动词或动词短语。
如:
void RemoveAll(){…}
void GetCharArray(){…}
void Invoke()
3.3类中访问修饰符或者功能相同的方法应该放在一起,且公共或实现接口的方法在前。
如:
Class Test
{
public void Invoke(){…}
public void Insert(){…}
private void RemoveAll(){…}
private void GetCharArray(){…}
}
四.属性
4.1使用名词定义属性,属性使用Pascal规则,首字符大写。
如:
public class Book
{
public Color BookName
{
//属性代码
}
}
4.2属性和相应字段名称要关联,可以使用”重构”菜单来生成属性.
如:
publicclass Book
{
private string bookName;
public Color BookName
{
Get{returnbookName;}
}
}
五.参数
5.1参数采用camel规则命名,首字符小写。
如:
String Format(string format,object[] args){…}
5.2使用描述性参数名称,参数名称应当具有足够的说明性。
5.3不要给参数加匈牙利类型表示法的前缀。
如下面是不合理的:
voidInsert(string sName,string strAddress)
应该为:
void Insert(stringname,string address)
5.4检查方法所有输入参数的有效性。
六.常量
6.1只读常量使用Pascal命名规则,即首字母大写。
如:
class Calendar
{
public readonlyColor RedColor;
public constTuesday;
}
6.2枚举命名使用Pascal规则命名,枚举成员本质属于常量,命名规则同上。
如:
enum CarColor { Red , Blue , Yellow }
6.3枚举值从小到大顺序定义。
如:
enumCarColor
{
Red = 1;
Blue= 2;
Yellow = 3;
}
6.4静态字段或属性采用Pascal规则,首字符大写。
public class Component:IComponent
{
static string typeName;
public static string TypeName{get;set}
}
七.接口
7.1接口定义使用Pascal规则,且必须以大写”I”开头。
public interfaceIDatePort
public interfaceIFormatable
7.2接口名称要有意义,中间不要有下划线”_”等字符串。
如:
interface I_Date_Port 是不合适的。
7.3如果类实现了接口,名称尽量和接口相同,只是省掉”I”字符。
public interface IComponent
{
//接口定义
}
public classComponent: IComponent
{
//类实现
}
八.事件
8.1委托名称采用Pascal规则,第一个字符大写。
如:
public delegate voidCountHandler(int x,int y);
8.2定义事件的委托要使用EventHandler后缀,且包括sender和e两个参数。
如:
Delegate voidMouseEventHandler(object sender,MouseEventArgs e) ;
8.3事件用到的参数类,名称要带EventArgs后缀。
如:
public classMouseEventArgs:EventArgs
{
//参数类内容
}
九.命名空间
9.1命名空间名称采用Pascal规则,首字符大写。
如:
NamespaceHairCompany
{
//命名空间内容
}
9.3命名空间名称尽量反映其内容所提供的整体功能。
如:
Microsoft.Media
Microsoft.Media.Design
附录三.注释规范
一.文件头部注释
1.1 文件都包含文件头,要说明文件名、作者、创建时间、变更记录等。
如:
/***********************
*文件名:CarPrint.cs
*作者:赵建磊
*创建日期:2010-05-23
*描述:完成打印功能
*修改日期:2009-11-23
*Email:perrymail@126.com
***********************/
1.2推荐采用.NET形式书写头部注释。
如:
///<summary>
///文件名:CarPrint.cs
///作者:赵建磊
///创建日期:2010-05-23
///描述:完成打印功能
///修改日期:2009-4-23
///Email:perrymail@126.com
///</summary>
二.类及其成员注释
2.1对方法和类使用”///”三斜线注释。
如:
///<summary>
///功能:对此类功能的描述
///作者:作者中文名
///日期:编写日期等
///描述:完成打印功能
///修改日期:2009-11-23
///</summary>
ClassBookSystem
{
///<summary>
///图书详细信息查询
///</summary>
Public DataSetSelectBooks(int id)
{
}
}
2.2.代码行文注释采用”//”和”/**/”进行,应量说明问题。
PublicDataSet SelectBooks(int id /*书籍ID*/)
{
DataSet dsBook;//注释数据集
}
2.3添加的注释必须能够说明此语句块的作用和实现手段。
2.4所有的注释都应该用英文或者中文,同一段注释不要混用两种语言。
2.5代码变更需要将旧代码注释,并且说说明变更原因、变更作者和变更时间。
附录四.行文规范
不可按外貌断定是非,要按公平断定是非。
-----《新约》(john)
版面
尽管在定义代码样式的格式时,你可以做出很多个性化的选择,但所有这些都是关于审美的。从定义上看,样式没有任何句法或语义上的意义;编译器会忽略样式。然而源代码的真正读者是其他程序员。编写代码时要为他们的利益着想。
u K&R括号风格
K&R风格是最早为人们所喜爱的风格,它是由C语言之父Kernighan和Ritchie在他们的《C程序设计语言》一书中确立的。由于这个原因,这种风格常被认为是最初和最好的风格。它的诞生来源于在一个小屏幕中显示尽可能多的信息的需求。
int k_and_r( ) {
int a = 0, b = 0;
while (a != 10) {
b++;
a++;
}
return b;
}
优点
l 占用空间较小,所以在一屏上一次可以显示更多的代码
l 后括号与相对应的语句缩进相同,所以可以很容易地找到括号所终止的构造
缺点
l 前括号和后括号上下不对齐,所以视觉上不易匹配
l 如果页面右侧的前括号丢失,将很难发现
l 代码语句看上去挤作一团
u Allman括号风格
Allman括号风格是一种空间上更开阔的方法。这也是C#语言在国内最流行的风格。
Int exdented( )
{
Int a = 0,b = 0;
While (a != 10)
{
b++;
a++;
}
Return b;
}
优点
l 格式清晰整洁
l 每个代码块都更易于区分
缺点
l 占用的竖向空间更多
l 如果你有很多只包含一条语句的代码块,那么会显得很浪费空间
l 对某些黑客而言这太像Pascal语句了
缩写规范
l 标识符应当直观可望文知意,不提倡使用任何缩写。
l 字符串变量推荐以“str”或“s”开头,采用string.Empty来初始化。
如:
String strName = string.Empty;
l 普通对象可以以“obj”开头。
如:
Book objBook=new Book( );
l 缩写可自行定义,一般取单词的前/后字符组成,以含义直观为准则。
合理名称如:
Label lblName;
Lable lbName;
Color bkColor;
ColorbackgroudColor;
Color bgColor;
l 一般情况下不要让缩写破坏标识符的含义。
如:
Public StudentGetStudent( )
排版
l 每行语句至少占一行,如果语句过(超过一屏),则语句断为两行显示。
如:
Public void Insert(string bookName,
String bokID,
String bookDetail,
Int bookNumber
);
下列定义不合理:
frmMain.Width = 0;frmMain.Height=0;
应为:
frmMain.Width = 0;
frmMain.Height=0;
l 把相似的内容放在一起,比如字段、属性、方法、事件等,使用“#region”命令分组。
如:
Class Book
{
#region构造方法
PublicBook(string name) {…}
#endregion
#region公共方法
PublicBook GetBookByName(string name) {…}
#endregion
#region属性
Publicstring Name{…}
#endregion
#region私有字段
Privatestring name;
#endregion
}
l 多个程序元素进行对等操作时,操作符之前、之后或者前后要加空格。
如:
If (!ValidNi(ni))
{
//程序代码
}
nRepssnInd = SsnData[index].nRepssnIndex;
nRepssnNi = SsnData[index].ni;
l 每个方法的源程序行数原则上应该少于200行。
l 语句嵌套层次不得超过3层。
l 避免相同的代码段在多个地方出现。
语句结构
l 如果使用了异常结构,一定要处理异常,一般是要写日志文件。
如:
try
{
//异常监控代码
}
Catch(Exception e)
{
Log.WriteLine(e.Messge);
}
l 分支语句不应该使用复杂长条件。
如:
If(txtName ==null || txtName == string.Empty)
{
//处理代码
}
应该将长条件封装成方法:
if(txtNameEnable( )) {…}
switch语句,case后面必须接break(这一点C#已经强行限制)。
l 禁止使用goto语句进行跳转。
l 行文中严禁出现“魔数”,特定含义的常数必须定义成枚举或常量。
如:
if( objCar.Type==1) objCar.Run( );
应为:
if(objCar.Type==Cars.BMP)objCar.Run( );
l 不同类型的操作符混合使用时,使用括号给出优先级。
如:
if( year % 4 == 0|| year % 100 != 0 && year % 400 == 0)
应为:
If((year % 4) == 0 ||((year % 100) != 0 && (year % 400) == 0 ))
l 不允许使用复杂的操作符组合。
如:
maxVal = ((a>b ? a:b) > ? (a>b ? a : b) : c);
应该为:
temp = (a>b ? a : b);
maxVal = ( iTemp > b ? iTemp : b);
l 循环、判断语句的程序块部分用花括号括起来,即使只有一条语句。
如:
if(condition)
flag = true;
推荐改为:
if(condition )
{
flag = true;
}
l 在switch语句中总是要有default子句,建议使用断言。
CarType type = GetType( );
Switch (type)
{
case CarType.GMC:
return new GMCCar();
break;
case CarType.BMW:
return new BMWCar();
break;
default:
Debug.Assert(false);
break:
}
l 每个类和方法完成单一的功能,不设计多用途面面俱到的类和方法。
l 严禁使用未经初始化的变量,变量通常使用构造方法来初始化。
大小写
l 不要创建名称相同,但大小写区别的任何元素。
如:
Void MyFunction(string a, string A)
int Color {get, set}
int CoLor{get,set}
l 应当大写仅有两个字符的缩写。
如:
string stuID;
l 不要把易混淆的数字和字母放在一起。
如:
string r = (lo == 10) ? (I1 == 11) : (lol != 101);
l 使用英文命名标识符。
l 不允许变量名、类名、属性名、方法名等与系统标识符重名。
SQL编码规范
l SQL语句全部大写。
如:
SELECT psnNameFROM person
CREATE PROC p_Selectproc
l 对较复杂的SQL语句加上注释,说明其功能。
l 连接符OR、IN、AND、以及=、<=、>=等前后加上一个空格。
l 使用明确的列代替SELECT*。
如:
SELECT A.ID, A.NAME, B.ID, B.NAME
FROM CLASS A, PERSON B
WHERE A.ID = B.ID
AND A.GRADE = ‘5’
软件架构
l 数据库中每一张表对应一个实体类/所据传输对象(DTO)。
l 实体类名称使用表名,也可带有Dto后缀。
如:
classpersonDto
{
Public String Nme
{
get{return name;}
get{this.name = value;}
}
}
l 三层架构应当合理使用,不应生搬硬套。
三层架构元素推荐后缀:
数据传输对象 XxxxDto
DAO工厂 XxxDAOFactory
DAO接口 IXxxxDAO
服务接口 IXxxxService
DAO的数据库实现 XxxxDAOOracle/XxxxDAOInfomix
业务逻辑 XxxxManger
系统
l 在国内不要随便使用设计模式等代码模式,因为并不流行。
l 系统输入、资源操作、(如内存分配、文件及目录操作)、网络操作(如通信、调用等)、任务之间的操作(如通信、调用等)时必须进行错误、超时或异常处理。
l 模块编写应该有完善的测试方面的考虑。
- C#OOP之十六 开发常用之各种规范参考
- OOP之封装 【C#】
- OOP之封装 【C#】
- 【iOS开发之Objective-C】Objective-C语言中的OOP
- Java开发代码规范之编程规约(四)——OOP规约
- 【C#】C#OOP编程之继承性
- Linux C 函数参考之常用数学函数篇
- Linux C Function()参考之常用数学函数篇
- C#OOP 之 this 和 base
- C#OOP之二 变量和表达式
- C#OOP之三 控制结构
- C#OOP之四 深入理解方法
- C#OOP 之九 文件输入输出流
- C#OOP之十一 委托和事件
- C#OOP之十二 创建多线程程序
- C#OOP之十四 .Net Framework简介
- Objective-C的语法之OOP
- C++primer薄片系列之OOP
- 关于 android 中 postDelayed方法的讲解,作用:延时调用。
- HDU-ACM1020
- emacs配置
- Bootstrap
- 最小生成树-kruskal
- C#OOP之十六 开发常用之各种规范参考
- android核心知识点学习资料
- HTML特殊字符大全
- HDU-ACM1021
- PS2游戏摇杆joystick与arduino uno简单实验
- 专题三1005
- Java解析xml文件的方法
- Java数据结构 划分算法
- Redis安装、运行