C#OOP之十六 开发常用之各种规范参考

简介: C#OOP之十六 开发常用之各种规范参考

视频课堂https://edu.csdn.net/course/play/7621

附录一.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


///作者:张晨光


///创建日期:2020-05-23


///描述:完成打印功能


///修改日期:2019-4-23


///Email:perrymail@126.com


///</summary>


二.类及其成员注释


2.1对方法和类使用”///”三斜线注释。


如:

///<summary>
///功能:对此类功能的描述
///作者:作者中文名
///日期:编写日期等
///描述:完成打印功能
///修改日期:2019-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;
}

优点


      占用空间较小,所以在一屏上一次可以显示更多的代码


      后括号与相对应的语句缩进相同,所以可以很容易地找到括号所终止的构造


缺点


     前括号和后括号上下不对齐,所以视觉上不易匹配


      如果页面右侧的前括号丢失,将很难发现


      代码语句看上去挤作一团


  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       行文中严禁出现“魔数”,特定含义的常数必须定义成枚举或常量。


如:

1. if( o

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


系统

  •     在国内不要随便使用设计模式等代码模式,因为并不流行。
  •       系统输入、资源操作、(如内存分配、文件及目录操作)、网络操作(如通信、调用等)、任务之间的操作(如通信、调用等)时必须进行错误、超时或异常处理。
  •     模块编写应该有完善的测试方面的考虑。  
目录
相关文章
|
1月前
|
前端开发 JavaScript 安全
C#一分钟浅谈:Blazor WebAssembly 开发
Blazor WebAssembly 是一个客户端框架,允许开发者使用C#和Razor语法构建Web应用。本文介绍了Blazor WebAssembly的基本概念、常见问题及解决方案,包括路由配置、数据绑定、异步操作、状态管理和性能优化等方面的内容,并分享了一些易错点及如何避免的方法。希望这些内容能帮助你在Blazor WebAssembly开发中少走弯路,提高开发效率。
111 51
|
1月前
|
开发框架 缓存 .NET
C# 一分钟浅谈:Blazor Server 端开发
Blazor Server 是基于 ASP.NET Core 的框架,允许使用 C# 和 Razor 语法构建交互式 Web 应用。本文介绍 Blazor Server 的基本概念、快速入门、常见问题及解决方案,帮助开发者快速上手。涵盖创建应用、基本组件、数据绑定、状态管理、跨组件通信、错误处理和性能优化等内容。
44 1
|
1月前
|
缓存 C# 开发者
C# 一分钟浅谈:Blazor Server 端开发
本文介绍了 Blazor Server,一种基于 .NET 的 Web 开发模型,允许使用 C# 和 Razor 语法构建交互式 Web 应用。文章从基础概念、创建应用、常见问题及解决方案、易错点及避免方法等方面详细讲解,帮助开发者快速上手并提高开发效率。
57 2
|
1月前
|
测试技术 Go C#
C#一分钟浅谈:ReSharper 插件增强开发效率
【10月更文挑战第25天】ReSharper 是 JetBrains 开发的一款 Visual Studio 插件,旨在提高 .NET 开发者的生产力。它通过代码分析、重构、导航等功能,帮助开发者避免常见错误,提升代码质量和开发效率。本文将通过具体代码案例,详细介绍 ReSharper 的常见功能及其应用。
45 1
|
1月前
|
C# Python
使用wxpython开发跨平台桌面应用,对wxpython控件实现类似C#扩展函数处理的探究
【10月更文挑战第30天】使用 `wxPython` 开发跨平台桌面应用时,可以通过创建辅助类来模拟 C# 扩展函数的功能。具体步骤包括:1. 创建辅助类 `WxWidgetHelpers`;2. 在该类中定义静态方法,如 `set_button_color`;3. 在应用中调用这些方法。这种方法提高了代码的可读性和可维护性,无需修改 `wxPython` 库即可为控件添加自定义功能。但需要注意显式调用方法和避免命名冲突。
|
2月前
|
JSON C# 开发者
C#语言新特性深度剖析:提升你的.NET开发效率
【10月更文挑战第15天】C#语言凭借其强大的功能和易用性深受开发者喜爱。随着.NET平台的演进,C#不断引入新特性,如C# 7.0的模式匹配和C# 8.0的异步流,显著提升了开发效率和代码可维护性。本文将深入探讨这些新特性,助力开发者在.NET开发中更高效地利用它们。
43 1
|
2月前
|
开发框架 NoSQL MongoDB
C#/.NET/.NET Core开发实战教程集合
C#/.NET/.NET Core开发实战教程集合
|
3月前
|
物联网 C# C语言
物联网开发中C、C++和C#哪个更好用
在物联网(IoT)开发中,C、C++和C#各有优缺点,适用场景不同。C语言性能高、资源占用低,适合内存和计算能力有限的嵌入式系统,但开发复杂度高,易出错。C++支持面向对象编程,性能优秀,适用于复杂应用,但学习曲线陡峭,编译时间长。C#易于学习,与.NET框架结合紧密,适合快速开发Windows应用,但性能略低,平台支持有限。选择语言需根据具体项目需求、复杂性和团队技术栈综合考虑。
|
2月前
|
XML 存储 安全
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
C#开发的程序如何良好的防止反编译被破解?ConfuserEx .NET混淆工具使用介绍
107 0
|
4月前
|
JSON C# 开发者
💡探索C#语言进化论:揭秘.NET开发效率飙升的秘密武器💼
【8月更文挑战第28天】C#语言凭借其强大的功能与易用性深受开发者喜爱。伴随.NET平台演进,C#持续引入新特性,如C# 7.0的模式匹配,让处理复杂数据结构更直观简洁;C# 8.0的异步流则使异步编程更灵活高效,无需一次性加载全部数据至内存。通过示例展示了模式匹配简化JSON解析及异步流实现文件逐行读取的应用。此外,C# 8.0还提供了默认接口成员和可空引用类型等特性,进一步提高.NET开发效率与代码可维护性。随着C#的发展,未来的.NET开发将更加高效便捷。
67 1