C#简单命名指南

转载 2006年06月09日 17:37:00

一个好的名字能够让你的程序更加好懂,别人一看到这个名字,就能够猜到你在做什么。大量好的名字离不开好的命名规范,而一个好的命名规范要做到两点:

l          合理。即容易被大家接受和使用。从这个意义上来说,好的命名规范不应该太长,它应该让你花上10分钟就能看完,写过几段代码就能熟悉。

l          风格一致。即前后一致,例外的情况少。

 

符合以上两点的命名规范就是好的,虽然它们具体的规则可能不同。有的时候,命名规范体现了编程思想,比如:对于接口,在.NET中,一般要求以“I”开头,在Java中没有这个要求,原因是Java认为接口和抽象类往往可以转化,比如:在项目初期,可能定义的是接口,而在后面,可能把它改成抽象类,如果名称一致,就避免了名称的改动。

 

另外,不同的命名规范也体现了程序发展历程。比如:匈牙利命名法要求类型前缀,故在C++VBPB一般都会大量出现类型前缀,像intAmount, strName等。而现在一般没有这个要求,原因是:1)有些类型可能会做修改,比如Int16变成Int32。另外对于一些动态语言(PythonJavaScript)来说,其类型是变化的,编译时无法确定;2)现在的开发环境更加的友好,即使在开发的时候,你也很容易知道变量的类型(只要鼠标移上去)。

 

本文的命名规范主要基于微软的标准,另外加上实际开发的一些具体经验。它还在不断的维护和完善,你可以针对不同项目的要求,做相应的调整。

命名样式

样式分类

名称

解释

适用环境

例子

Pascal 大小写

首字母和后面的每个单词的首字母都大写;其他字母小写

 

BackColor

Camel 大小写

首字母小写,而后面的每个单词的首字母大写;其他字母小写

 

backColor

大写

所有字母都大写

l          缩写。

l          少于等于2个字符

System.IO

System.Web.UI

样式的选择

标识符

命名格式

例子

备注

参数、局部变量

Camel

public int GetTypeID(string typeName)

{  int typeID;   }

 

PrivateProtected的实例字段

Camel

private string redValue;

protected bool isOk;

 

界面控件

Camel

private Label lblAlarm;

 

缩写

大写

namespace System.IO

{    }

缩写必须是被普遍接受、众所周知的缩写。

除上面的标识符外

Pascal

public System.Drawing.Color BackColor

{    }

 

 

原则和习惯

首要原则

有意义的,描述性的词语来命名。能够一眼看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了

1.         除约定俗成的,别用缩写。用name, address, salary等代替 nam, addr, sal

2.         除用于循环,别使用单个字母的变量象i, n, x . 而要使用 index, temp等。
for ( int i = 0; i < count; i++ ){ ...}

其他习惯

l          除了界面控件外,不要使用类型前缀。比如:使用名称amount,而不是 intAmount

l         类:使用名词、名词短语命名。比如:public class FileStream

l          方法:使用动词、动词短语开始。比如:CreateUser(), RemoveAt()等;

l          接口:以 I 开始,后面加上名词、名词短语、形容词命名。比如:IDisposable

l          常量:所有单词大写,多个单词之间用 "_" 隔开。public const string PAGE_TITLE = "Welcome";

l          命名空间:

1.         基本格式:

CompanyName/ProjectName.TechnologyName[.Feature][.Design]

a)         CompanyName/ProjectName:公司名、项目名称或产品名称;

b)         TechnologyName:稳定的、公认的技术名称或架构层次名称;

c)         [.Feature][.Design]:可选的功能与设计;

例如:

//微软公司Web开发中的UI中的Design

namespace Microsoft.Web.UI.Design        

//西门子报价项目中业务逻辑层中的项目管理

namespace SiemensQuotation.BusinessRules.ProjectManagement  

2.         几个规则

a)         嵌套的命名空间应当有依赖关系。例如:System.Web.UI.Design 中的类依赖于 System.Web.UI 中的类,而不能相反。

b)        命名空间和类不能使用同样的名字。例如,命名空间Debug下最好不要又一个类名为Debug

c)         如果公司名、项目名称或产品名称太长的话,可以用缩写(且全部大写)

控件命名

控件的名称中需要加上前缀,之所以这样做是为了区分界面的控件和普通的对象,由于界面修改往往非常频繁,区分开来能使你更快速的找到控件,从而修改界面。举一个例子:

界面有10TextBox10Label。一个TextBox对应一个Label,为了完成读写,你至少要有20条语句来从控件进行取、赋值操作,如果有前缀的话,输入this.txt,你就几乎马上能找到这个控件。反之,如果没有前缀,由于窗口或页面对象拥有大量的属性和变量(>100个),你将花费大量时间来查找。另外一个TextBox对应一个Label(一个代表值,一个代表名称),它们往往指同一样事物,如果有前缀,就很容易区分这两个控件。

控件

前缀

备注

Label

lbl

比如:lblName

TextBox

txt

 

Button     

btn

 

CheckBox 

chk

 

RadioButton 

rdo

 

CheckBoxList  

chklst

 

RadioButtonList 

rdolst

 

ListBox     

lst

 

DropDownList 

ddl

 

DataGrid 

dg

 

DataList     

dl

 

Image 

img

 

Table   

tbl

 

Panel        

pnl

 

LinkButton 

lnkbtn

 

ImageButton  

imgbtn

 

Calender 

cld

 

RequiredFieldValidator 

rfv

 

CompareValidator 

cv

 

RangeValidator 

rv

 

RegularExpressionValidator 

rev

 

ValidatorSummary 

vs

 

相关文章推荐

掌握的的简单命名指南

  • 2011-07-29 18:00
  • 68KB
  • 下载

关于java中的“包”与C#中的“命名空间”的简单认识[转]

Package vs. Namespace我们知道,重用性(reusebility)是软件工程中一个非常重要的目标。重用,不仅仅指自己所写的软件(代码、组件等等)可以被重复利用;更 广义的重用是指不...

迭代器(C# 编程指南)

迭代器是一种方法、get 访问器或运算符,它通过使用 yield 关键字对数组或集合类执行自定义迭代。yield 返回语句会导致源序列中的元素在访问源序列中的下一个元素之前立即返回给调用方。尽管您以方...

LINQ 查询表达式(C# 编程指南)

语言集成查询 (LINQ) 是一组技术的名称,这些技术建立在将查询功能直接集成到 C# 语言(以及 Visual Basic 和可能的任何其他 .NET 语言)的基础上。 借助于 LINQ,查询现在已...

泛型接口(C# 编程指南)

为泛型集合类或表示集合中项的泛型类定义接口通常很有用。对于泛型类,使用泛型接口十分可取,例如使用 IComparable 而不使用 IComparable,这样可以避免值类型的装箱和取消装箱操...

反射(C# 编程指南)

反射实际上就是动态的得到程序集中的属性和方法 反射提供了封装程序集、模块和类型的对象(Type 类型)。可以使用反射动态创建类型的实例,将类型绑定到现有对象,或从现有对象获取类型并调用其方法或访...

Lambda 表达式(C# 编程指南)

Visual Studio 2010 其他版本 “Lambda 表达式”是一个匿名函数,它可以包含表达式和语句,并且可用于创建委托或...

枚举类型(C# 编程指南)

枚举类型(C# 编程指南) Posted on 2009-03-03 16:35 ottox 阅读(681) 评论(0)编辑收藏枚举类型(C# 编程指南) 更新:2007 年 11 月枚举类型(也称...

使用 ref 和 out 传递数组(C# 编程指南)

与所有的 out 参数一样,在使用数组类型的 out 参数前必须先为其赋值,即必须由被调用方为其赋值。 例如: static void TestMeth...

虚幻引擎的C#脚本插件 UnrealCS Demo指南

虚幻引擎C#插件现在已经开源,开发者可以使用C#语言来开发项目了。 源码地址:https://github.com/xiongfang/UnrealCS 文档地址:https://github.c...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)