前言

在刚学习c#的时候,在脑子根本就么有命名规范这个概念,有了一定入门的基础,也很难严格要求自己去规范代码的命名,工作后,发现自己的命名和其他人的命名总会有一些出入,总会闹出一些尴尬的笑话,这里汇总12条c#命名规范。

命名方式主要有两种,
1.驼峰命名法:Camel,驼峰命名法跟帕斯卡命名法相似,只是首字母为小写,如userName。因为看上去像驼峰,因此而得名。俗称“小驼峰”。

2.帕斯卡命名法:帕斯卡命名法 即pascal命名法。做法是首字母大写,如UserName,俗称“大驼峰”。
还有一种不是很常见的:匈牙利命名法,该命名法是在每个变量名的前面加上若干表示数据类型的字符。基本原则是:变量名=属性+类型+对象描述。如i表示int,所有i开头的变量命都表示int类型。s表示String,所有变量命以s开头的都表示String类型变量。

1.变量命名及定义

  • 在简单的循环语句中计数器变量使用 i, j, k, l, m, n
  • 使用 Camel 命名规则
    -私有变量也可以加_,如 _userName
  • 对于bool型属性或者变量使用Is(is)作为前缀,不要使用Flag后缀,例如应该使用IsDeleted,而不要使用DeleteFlag
    -String.Format()代替字符串拼接;
    -长字符串相加或拼接次数较多时,使用String.Builder;
    -使用int.TryParse(),不使用int.Parse();
    -不再循环内定义变量;

2.属性命名

  • 名称应该为名词及名词短语
  • 使用Pascal规则

3.枚举命名规则

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

4.方法命名

  • 使用Pascal规则
  • 对方法名采用一致的动词/宾语或宾语/动词顺序。例如,将动词置于前面时,所使用的名称诸如 InsertWidget 和 InsertSprocket;将宾语置于前面时,所使用的名称诸如 WidgetInsert 和 SprocketInsert。
  • 推荐名称应该为动词或动词短语.例如Save,SaveCustomer,而不要使用CustomerSave

5.集合命名

  • 名称应该为名词及名词短语
  • 使用Pascal规则
  • 名称后面追加“Collection”或者加复数形式-s也行

6.自定义的属性以Attribute结尾

代码如下:
public class AuthorAttribute : Attribute
{
}

7.自定义的异常以Exception结尾

代码如下:
public class AppException : Exception
{
}

8.接口命名

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

代码如下:
interface ICompare
{
int Compare();
}

9.类命名

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

10 缩进

缩进会使代码逻辑更加清晰,嵌套更加明确。缩进时不要是使用空格键,使tab键。

11控件的命名

-Button:btn开头
-Textbox:tb开头
-Combox:cb开头
-ContentMenuStrip:cms开头
-CheckBox:ccb开头
-DataGridView:dgv开头

12事件命名

  • event handlers命名使用 EventHandler 后缀
  • 两个参数分别使用 sender 及 e
  • 使用Pascal规则
  • 事件参数使用EventArgs 后缀
  • 事件命名使用语法时态反映其激发的状态,例如 Changed,Changing
  • 考虑使用动词命名. 变量命名

总结

其实没有什么可以好总结,良好的命名规范是作为码农的最基本要求,是“做人的底线”。还有一些没有指出的规范,希望能评论指出,谢谢。

c#命名规范汇总12条的更多相关文章

  1. 推荐:C#命名规范12条

    编码规范对于程序员而言尤为重要,有以下几个原因: 1.一个项目的生命周期中,80%的花费在于维护; 2.几乎没有任何一个项目,在其整个生命周期中,均由最初的开发人员来维护; 3.命名规范可以改善项目的 ...

  2. C#开发命名规范

    学习C#之初,始终不知道怎么命名比较好,很多时候无从命名,终于有一天我整理了一份命名规范文档,自此我就是按照这个命名规范书写代码,整洁度无可言表,拙劣之处请大家斧正,愚某虚心接受,如有雷同,不胜荣幸 ...

  3. mysql及php命名规范

    一.mysql命名规范 1.设计原则 1) 标准化和规范化数据的标准化有助于消除数据库中的数据冗余.标准化有好几种形式,但 Third Normal Form(3NF)通常被认为在性能.扩展性和数据完 ...

  4. android命名规范

    Android 开发规范 (陈杨) (一)注意事项 1. 编码方式统一用UTF-8. Android Studio默认已是UTF-8,只要不去改动它就可以了. 2. 缩进统一为4个空格,将Tab si ...

  5. Web UI 网站用户界面设计命名规范

    Web UI 网站用户界面设计命名规范 WEB UI设计命名规范,也就是网站用户界面设计(网页设计)命名规范. 这套规范并非单纯的CSS.html或JavaScript命名规范,它涉及了很多使用Pho ...

  6. JavaScript发展史,与JScript差别,引入方式,数据类型,命名规范,命名推荐,解决命名冲突

    文件夹: 1.JavaScript发展史 2.JavaScript与JScript差别 3.JavaScript引入方式 4.JavaScript基本数据类型及布尔值 5.JavaScript命名规范 ...

  7. 我自己总结的C#开发命名规范整理了一份

    我自己总结的C#开发命名规范整理了一份 标签: 开发规范文档标准语言 2014-06-27 22:58 3165人阅读 评论(1) 收藏 举报  分类: C#(39)  版权声明:本文为博主原创文章, ...

  8. C#开发命名规范总结整理

    1.  命名规范a) 类[规则1-1]使用Pascal规则命名类名,即首字母要大写.eg:Class Test{    ...}[规则1-2]使用能够反映类功能的名词或名词短语命名类.[规则1-3]不 ...

  9. UI命名规范

    Ui控件汇总 按钮 单行文本框 多行文本框 水平滑动条 垂直滑动条 水平滚动条 垂直滚动条 进度条 下拉列表框 复选框 UI命名规范 UI文字做好备份,方便后期维护修改 按钮命名规范:btn_ 第一个 ...

随机推荐

  1. C++判断字符串是否为空的一个小问题

    刚才visual studio下处理一个函数字符串入参,判断入参字符串是否为空有点小问题. 接口函数声明是这样的:SHORT GETWFSINFPINKEYDETAIL(LPCTSTR strKeyN ...

  2. HTML编码和CSS编码会遇到的问

    http://codeguide.bootcss.com/#html-syntax  参考链接 属性顺序 HTML 属性应当按照以下给出的顺序依次排列,确保代码的易读性. class id, name ...

  3. html5 兼容版本 video

    <!-- first try HTML5 playback: if serving as XML, expand `controls` to `controls="controls&q ...

  4. hadoop中setup,cleanup,run和context讲解

    hadoop 执行中的setup run cleanup context的作用1.简介1) setup(),此方法被MapReduce框架仅且执行一次,在执行Map任务前,进行相关变量或者资源的集中初 ...

  5. xml、网络编程、 反射

    XML 常用于配置文件.传输数据. <?xml version="1.0" encoding="UTF-8"?><persons> &l ...

  6. sql中关于存在就不做操作的代码块

    前言: 在开发中,经常会对数据库表进行新增修改操作,那么如果表中的属性信息已然存在啦!就没必要去做重复的操作了... 代码块 BEGIN SELECT "COUNT"(*) int ...

  7. C Primer Plus 第8章 字符输入/输出和验证输入 编程练习

    1. #include <stdio.h> int main(){ char ch; int ct = 0; while ((ch=getchar()) != EOF) ct++; pri ...

  8. PAT1039: Course List for Student

    1039. Course List for Student (25) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Y ...

  9. SSM-SpringMVC-25:SpringMVC异常顶级之自定义异常解析器

    ------------吾亦无他,唯手熟尔,谦卑若愚,好学若饥------------- 上篇博客相信大家也看到了,自定义异常,用了SimpleMappingExceptionResolver这个解析 ...

  10. SpringMVC接口测试异常:Can not deserialize instance of int out of START_OBJECT token

    之前使用springmvc搭建了restful风格的接口服务,在使用mockmvc进行集成测试的时候出现了异常:Can not deserialize instance of int out of S ...