C#常用的命名规则

Pascal 规则:
每个单词开头的字母大写。
例如:
TestCounter

Camel 规则:
除了第一个单词外的其他单词的开头字母大写.。
例如:
testCounter

Upper 规则:
仅用于一两个字符长的常量的缩写命名,超过三个字符长度应该应用Pascal规则。例如:
public class Math
{
public const PI = …
public const E = …
public const FeigenBaumNumber = …
}

C#具体命名规则参考
类命名

  • 类名应该为名词及名词短语,尽可能使用完整的词。
  • 使用Pascal规则。
  • 不要使用类前缀。
  • 不要使用下划线字符“_”。
  • 有时候需要提供以字母 I 开始的类名称,虽然该类不是接口。只要 I 是作为类名称组成部分的整个单词的第一个字母,这便是适当的。例如,类名称 IdentityStore 就是适当的。
  • 在适当的地方,使用复合单词命名派生的类。派生类名称的第二个部分应当是基类的名称。例如,ApplicationException 对于从名为 Exception 的类派生的类是适当的名称,原因是 ApplicationException 是一种 Exception。请在应用该规则时进行合理的判断。例如,Button 对于从 Control 派生的类是适当的名称。尽管按钮是一种控件,但是将 Control 作为类名称的一部分将使名称不必要地加长。

接口命名

  • 接口名称应该为名词及名词短语或者描述其行为的形容词,尽可能使用完整的词. (Example IComponent or IEnumberable)
  • 使用Pascal规则
  • 使用字符I为前缀,并紧跟一个大写字母(即接口名的第一个字母大写)
    例如:
    interface ICompare
    {
    int Compare();
    }

枚举命名

  • 对于 Enum 类型和值名称使用 Pascal 大小写。
  • 少用缩写。
  • 不要在 Enum 类型名称上使用 Enum 后缀。
  • 对大多数 Enum 类型使用单数名称,但是对作为位域的 Enum 类型使用复数名称。
  • 总是将 FlagsAttribute 添加到位域 Enum 类型。

变量命名

  • 在简单的循环语句中计数器变量使用 i, j, k, l, m, n。
  • 使用 Camel 命名规则。

方法命名

  • 使用Pascal规则。
  • 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
  • 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave。
  • 不要在方法中重复类的名称。例如,如果某个类已命名为 Book,则不要将某个方法称为 Book.CloseBook,而可以将方法命名为 Book.Close。

属性命名

  • 名称应该为名词及名词短语。
  • 使用Pascal规则。
  • 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag。

集合命名

  • 名称应该为名词及名词短语。
  • 使用Pascal规则。
  • 名称后面追加“Collection”。

事件命名

  • event handlers命名使用 EventHandler 后缀。
  • 两个参数分别使用 sender 及 e。
  • 使用Pascal规则。
  • 事件参数使用EventArgs 后缀。
  • 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing。
  • 考虑使用动词命名. 变量命名。
  • 在简单的循环语句中计数器变量使用 i, j, k, l, m, n。
  • 使用 Camel 命名规则。

自定义的属性以Attribute结尾
public class AuthorAttribute : Attribute
{
}

自定义的异常以Exception结尾
public class AppException : Exception
{
}

其它常用命名规则

  • 代码的缩进,要用Tab,而不要用space。
  • 局部变量的名称要有意义。不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n)。
  • 所有成员变量前加前缀“_”。
  • 所有的成员变量声明在类的顶端,用一个换行把它和方法分开。
  • 用有意义的名字命名namespace,如:产品名、公司名。
  • 始终使用"{ }"包含if下的语句,即使只有一条语句。
  • 把相似的内容放在一起,比如数据成员、属性、方法、事件等,并适当的使用#region…#endregion。

命名规范的总结表格表示如下:
与类相关

标识符命名规则示例
类/结构PascalAppDomain
枚举类型PascalErrorLevel
枚举值PascalFatalError
事件PascalValueChange
异常类PascalWebException
只读的静态字段PascalRedValue
接口PascalIDisposable ①
集合PascalCustomerCollection
方法PascalToString
命名空间PascalSystem.Drawing
参数CameltypeName
属性PascalBackColor
受保护的实例字段CamelredValue ②
公共实例字段PascalRedValue ③

① 加粗部分是必须的。
② 很少使用,属性优于使用受保护的实例字段。
③ 很少使用,属性优于使用公共实例字段。

与变量命名相关

数据类型数据类型前缀标准命名举例
ArrayarrShoppingList
BooleanblnblnIsPostBack
BytebytbytPixelValue
CharchrchrDelimiter
DateTimedtmdtmStartDate
DecimaldecdecAverageHeight
DoubledbldblSizeofUniverse
IntegerintintRowCounter
LonglnglngBillGatesIncome
ObjectobjobjReturnValue
ShortshrshrAverage
SinglesngsngMaximum
StringstrstrFirstName

与ADO.NET有关

数据类型数据类型简写标准命名举例
ConnectionconconNorthwind
CommandcmdcmdReturnProducts
ParameterparmparmProductID
DataAdapterdaddadProducts
DataReaderdtrdtrProducts
DataSetdstdstNorthWind
DataTabledtbldtblProduct
DataRowdrowdrowRow98
DataColumndcoldcolProductID
DataRelationdreldrelMasterDetail
DataViewdvwdvwFilteredProducts

与页面控件有关

数据类型数据类型简写标准命名举例
AdRotatoradrtadrtExample
ButtonbtnbtnSubmit
CalendarcalcalMettingDates
CheckBoxchkchkBlue
CheckBoxListchklchklFavColors
ColorDialogcdlgcdlgColor
ComboBoxcbocboMenu
CompareValidatorvalcvalcValidAge
CustomValidatorvalxvalxDBCheck
DataGriddgrddgrdTitles
DataListdlstdlstTitles
DateTimePickerdtpdtpStartDate
DropDownListdropdropCountries
FoldBrowserDialogfbdlgfgdlgBrowser
FontDialogfdlgfdlgFoot
HscrollBarhsbhsbImage
HyperLinklnklnkDetails
ImageimgimgAuntBetty
ImageListilstilstImage
ImageButtonibtnibtnSubmit
LabellbllblResults
LinkButtonlbtnlbtnSubmit
ListBoxlstlstCountries
ListViewlvwlvwBrowser
MainMenummnummnuFile
OpenFileDialogodlgodlgFile
PanelpnlpnlForm2
PictureBoxpicpicImage
PlaceHolderplhplhFormContents
PrintDialogpdlgpdlgPrint
RadioButtonradradFemale
RadioButtonListradlradlGender
RangeValidatorvalgvalgAge
Regularexpression_rvalevaleEmail_Validator
RepeaterrptrptQueryResults
RequiredFieldValidatorvalrvalrFirstName
SaveFileDialogsdlgsdlgSave
StatusBarstbstbFootPrint
TabletbltblCountryCodes
TableCelltblctblcGermany
TabControltctltctlSelected
TableRowtblrtblrCountry
TextBoxtxttxtFirstName
TimertmrtmrCount
ToolBartlbtlbManage
TreeViewtvwtvwType
ValidationSummaryvalsvalsFormErrors
VscrollBarvsbvsbImage
XMLxmlcxmlcTransformResults

共性规则

  • 标识符应当直观且可以拼读,可望文知意,不必进行“解码”。
    标识符最好采用英文单词或其组合,便于记忆和阅读。切忌使用汉语拼音来命名。程序中的英文单词一般不会太复杂,用词应当准确。例如不要把CurrentValue写成NowValue。
  • 标识符的长度应当符合**“min-length && max-information”**原则。
    长名字能更好地表达含义,所以函数名、变量名、类名长达十几个字符不足为怪。单字符的名字也是有用的,常见的如 i,j,k,m,n,x,y,z 等,它们通常可用作函数内的局部变量。
  • 程序中不要出现仅靠大小写区分的相似的标识符。
    例如:
    int x, X; // 变量x 与 X 容易混淆
  • 程序中不要出现标识符完全相同的局部变量和全局变量,尽管两者的作用域不同而不会发生语法错误,但会使人误解。
  • 用正确的反义词组命名具有互斥意义的变量或相反动作的函数等。
  • 尽量避免名字中出现数字编号,如Value1,Value2等,除非逻辑上的确需要编号。
  • 常量全用大写的字母,用下划线分割单词。
  • 静态变量加前缀s_(表示static)。
  • 全局变量加前缀g_(表示global)。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值