客户端开发CSharp命名规范手册

命名规范
  1. 使用驼峰法命名
  2. 类名使用首字母大写的驼峰法命名,例如:PlayerObject
  3. 方法名使用首写字母大写命名方式,例如:Init()
  4. 成员变量、局部变量都统一使用首字母小写的命名方式,例如:localValue;属性首字母大写,字段统一小写;(属性是指带get,set访问器的)
  5. 常量和enum的命名都使用大写+下划线的方式,例如:MAX_PLAYER_NUMBER
  6. 抽象类名使用Abstract开头,例如:AbstractCharacter,接口使用I开头,例如:ITask
  7. 避免在类和变量的命名中使用缩写
  8. 对于接口和抽象类,需要在类前加注释,在每个方法上也尽量多写注释,用来说明类或者函数的作用
  9. 枚举类名也使用首字母大写的驼峰法命名,且以Enum结尾,例如:ServerStatusEnum
  10. 所有的语句块必须使用大括号包裹,禁止出现if(condition) do();这种使用方式,这种写法不利于调试
驼峰式(补充)

驼峰式命名法就是当变量名或函式名是由一个或多个单词连结在一起,而构成的唯一识别字时,第一个单词以小写字母开始;第二个单词的首字母大写或每一个单词的首字母都采用大写字母,例如:myFirstName、myLastName,这样的变量名看上去就像驼峰峰一样此起彼伏,故得名。
驼峰式命名法(Camel-Case)一词来自 Perl 语言中普遍使用的大小写混合格式,而 Larry Wall 等人所著的畅销书《Programming Perl》(O’Reilly 出版)的封面图片正是一匹骆驼。
驼峰式命名法的命名规则可视为一种惯例,并无绝对与强制,为的是增加识别和可读性。
小驼峰法
变量一般用小驼峰法标识。驼峰法的意思是:除第一个单词之外,其他单词首字母大写。譬如

int myStudentCount; 

变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
大驼峰法*
相比小驼峰法,大驼峰法把第一个单词的首字母也大写了。常用于类名,函数名,属性,命名空间。譬如

public class DataBaseUser; 

实体和 Dto

实体命名规范

  1. 能清晰简单的表达当前实体的意义

  2. 实体对象:如客户实体 Customer/User/WorkOrderData

  3. 主从表实体:如客户角色 CustomerRole / 客户设备 CustomerDevice

  4. 对于涉及业务逻辑数量比较大的表以 Data 结尾(会建立分区表),比如

    WorkOrderDataMessageData

  5. 对于涉及日志方面以 Log 结尾,例如 CustomerLoginLogMessageSendLog

  6. 属性是 bool 类型的,以 Is 开头

  7. 属性结尾规范

    • 数量以 Count 结尾
    • 次数以 Times 结尾
    • 时间以 DateTime 结尾
    • 图片以 Image 结尾
    • 单号以 No 结尾
    • 类型以 Type 结尾
    • 状态以 Status 结尾
    • 结果以 Result 结尾
    • 备注 Remark
  8. 同一描述或表达意思,不能出现 2 次以上的属性定义,即设备名称DeviceName不可在出现MachineName等表达设备名称的属性

  9. 实体名和属性名不得出现无法理解的缩写,除非为约定缩写

   SPC, Url 等
   Customer 缩写 Cust 等

实体添加特性

  • 需为实体添加 Table(“Is_表名”) 特性,表名自己定义
/// <summary>
/// (pjt)管理员角色表
/// </summary>
[Table("Is_AdminRoles")]
public class AdminRoles: Entity<int>, IHasCreationTime, ISoftDelete
{
}
  • 需为实体字段为 String 类型添加 StringLength 特性,长度自己定义,小数点默认保留 2
/// <summary>
/// 角色代码
/// </summary>
[StringLength(50)]
public string RoleCode { get; set; }
/// <summary>
/// 角色名称
/// </summary>
[StringLength(50)]
public string RoleName { get; set; }

实体继承接口

  • 实体需继承Entity<T>

  • 业务逻辑相关实体需实现IHasCreationTimeISoftDelete

  • 实现软删除接口需在 DbContextOnModelCreating方法添加modelBuilder.Entity<实体名>().HasQueryFilter(p => !p.IsDeleted)

Dto 命名规范

  • 当前模块名 + Service 层中的方法名 + Output/Input
DeviceManagerCreateInput/CustomerLoginInput
  • 多个相关实体或相关的 DTO 应该存放到相同文件夹中

    • 实体:Customer/CustomerLogin/CustomerRole

    • Dto :DeviceManagerCreateInput/ DeviceManagerListOutput


C#代码规范

1. 规范制定原则

  • 方便代码的交流和维护。
  • 不影响编码的效率,不与大众习惯冲突。
  • 使代码更美观、阅读更方便。
  • 使代码的逻辑更清晰、更易于理解。

2. 术语定义

2.1 Pascal 大小写

将标识符的首字母和后面连接的每个单词的首字母都大写。可以对三字符或更多字符的标识符使用Pascal 大小写。例如: BackColor。

2.2 Camel 大小写

标识符的首字母小写,而每个后面连接的单词的首字母都大写。例如:backColor。

3. 代码外观

3.1 列宽

控制在 120 字符左右。

3.2 换行

  • 在逗号后换行。
  • 在操作符前换行。
  • 规则1优先于规则2。

3.3 缩进

缩进应该是每行一个Tab(4个空格),不要在代码中使用Tab字符。
VS设置:工具->选项->文本编辑器->C#->制表符->插入空格

3.4 空行

空行是为了将逻辑上相关联的代码分块,以便提高代码的可阅读性。

  • 在以下情况下使用两个空行

    • 接口和类的定义之间。
    • 枚举和类的定义之间。
    • 类与类的定义之间.
  • 在以下情况下使用一个空行

    • 方法与方法、属性与属性之间。
    • 方法中变量声明与语句之间。
    • 方法与方法之间。
    • 方法中不同的逻辑块之间。
    • 方法中的返回语句与其他的语句之间。
    • 属性与方法、属性与字段、方法与字段之间。
    • 注释与它注释的语句间不空行,但与其他的语句间空一行。

3.5 程序注释

3.5.1 文件注释
//===========================================================
// Copyright (c) $年份 $公司名称.  
// 版权所有.
//===========================================================
3.5.2 对象注释(类、接口、枚举、结构等)
/// <summary>
/// $功能描述
/// 作者:$作者
/// 日期:$创建日期
/// 版本:$版本号
/// </summary>
3.5.3 其他注释(单行注释、多行注释、方法注释)
  • 方法注释必须
  • 其他根据情况自行添加。

4. 命名规范

4.1 命名原则

  • 使名称足够长以便有一定的意义,并且足够短以避免冗长。
  • 唯一名称在编程上仅用于将各项区分开。
  • 表现力强的名称是为了帮助人们阅读,提供人们可以理解的名称是有意义的。
  • 请确保选择的名称符合适用语言的规则和标准。

4.2 命名空间

命名命名空间时的一般性规则是使用公司名称,后跟项目名称和可选的功能与设计。
示例namespace CompanyName.ProjectName.ModuleName

4.3 类

  • 使用 Pascal 大小写。
  • 用名词或名词短语命名类。
  • 使用全称避免缩写,除非缩写已是一种公认的约定,如URL、HTML。
  • 不要使用类型前缀,如在类名称上对类使用 C 前缀。例如,使用类名称 FileStream,而不是 CFileStream

4.4 接口

  • 用名词或名词短语,或者描述行为的形容词命名接口。例如,接口名称 IComponent 使用描述性名词。接口名称 ICustomAttributeProvider 使用名词短语。名称 IPersistable 使用形容词。
  • 使用 Pascal 大小写。
  • 少用缩写。
  • 给接口名称加上字母 I 前缀,以指示该类型为接口。在定义类/接口对(其中类是接口的标准实现)时使用相似的名称。两个名称的区别应该只是接口名称上有字母 I 前缀。
  • 当类是接口的标准执行时,定义这一对类/接口组合就要使用相似的名称。两个名称的不同之处只是接口名前有一个I前缀。

4.5 属性 (Attribute)

  • 将后缀 Attribute 添加到自定义属性类。

4.6 枚举 (Enum)

  • 对于 Enum 类型和值名称使用 Pascal 大小写。
  • 少用缩写。
  • 不要在 Enum 类型名称上使用 Enum 后缀。

4.7 参数

  • 使用描述性参数名称。参数名称应当具有足够的描述性,以便参数的名称及其类型可用于在大多数情况下确定它的含义。
  • 对参数名称使用 Camel 大小写。
  • 使用描述参数的含义的名称,而不要使用描述参数的类型的名称。开发工具将提供有关参数的类型的有意义的信息。因此, 通过描述意义,可以更好地使用参数的名称。少用基于类型的参数名称,仅在适合使用它们的地方使用它们。
  • 不要使用保留的参数。保留的参数是专用参数,如果需要,可以在未来的版本中公开它们。相反,如果在类库的未来版本中需要更多的数据,请为方法添加新的重载。
  • 不要给参数名称加匈牙利语类型表示法的前缀。

4.8 方法

  • 使用动词或动词短语命名方法。
  • 使用 Pascal 大小写。

4.9 属性 (property)

  • 使用名词或名词短语命名属性。
  • 使用 Pascal 大小写。
  • 不要使用匈牙利语表示法。

4.10 常量 (const)

  • 所有单词大写,多个单词之间用 “_” 隔开。

4.11 字段(Field)

  • private、protected 使用 Camel 大小写。
  • public 使用 Pascal 大小写。
  • 为了区分字段和局部变量,建议在首字母前加一下划线_。
    ps:C# 中通常字段只有 private,若需暴露,请使用属性。
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值