框架
.net 读 dot net
using System ; //引用头文件 namespace 控制台 ; //命名空间 【Program的命名空间就是:控制台】 class Program ; //class 用于声明一个类
使用中建议、类名称与文件名保持一样 尽量一个类一个文件
一、命名规范
1. 大小写风格
- PascalCase
- 用于:类、接口、结构、枚举、属性、方法、事件、命名空间
- 例:
OrderService、GetUserInfo()、UserName
- camelCase
- 用于:参数、局部变量
- 例:
userId,totalCount
- 带下划线camelCase
- 用于:私有字段(Roslyn、.NET Runtime 推荐)
- 例:
_logger,_cache
- SCREAMING_CASE
- 用于:常量、
static readonly字段 - 例:
DEFAULT_BUFFER_SIZE;
2. 接口命名
- 接口必须以 I 开头
- 示例:
IList,ILoggerFactory
3. 枚举命名
- 枚举成员:PascalCase
- 不使用前缀(如
Enum_)
enum FileState { Open, Closed, Locked }
4. 命名空间
- PascalCase
- 公司或组织级前缀
- 示例:
Microsoft.Extensions.Logging
二、代码布局与格式
1. 缩进与空白
, ; { }后加空格;方法调用括号内无空格
DoWork(item, index);
2. 大括号(Brace)风格
使用 Allman 风格(每个 { 独占一行):
public void Run() { ... }
3. 空行规则
- 成组代码块之间使用 1 行空行
- 方法之间留 1 行空行
- 不要连续多个空行
三、成员排序(微软推荐顺序)
类内部成员推荐顺序:
- 常量
- 静态字段
- 字段
- 构造函数
- 属性
- 事件
- 方法
- 嵌套类型
# region 常量 # endregion # region 静态字段 # endregion # region 字段 # endregion # region 构造函数 # endregion # region 属性 # endregion # region 事件 # endregion # region 方法 # endregion # region 嵌套类型 # endregion
四、表达式与语言特性
1. var 使用
2. 表达式体成员
- 适用于简单成员:
public int Count => _items.Count; public override string ToString() => Name;
3. Lambda 风格
- 简短 lambda 可在一行
- 多行 lambda 保持缩进
items.Where(x => { return x.Enabled; });
五、可读性规范
1. 方法长度
- 尽量短小,一个方法保持单一职责
2. 参数顺序
- 必选参数在前,可选参数在后
CancellationToken必须是最后一个参数:
public Task RunAsync(int id, CancellationToken cancellationToken);
3. 布尔命名
- 使用肯定句:
isReady,hasValue,canExecute - 避免:
isNotValid,noItems
六、注释规范
1. 文档注释 XML
公共 API 必须有 XML 注释:
/// <summary> /// 获取用户信息。 /// </summary> public User GetUser(int id) { ... }
2. 行注释
只用于解释复杂逻辑,避免写显而易见的注释。
七、异常与错误处理
1. 异常名称
继承 Exception 且名称以 Exception 结尾
class InvalidConfigurationException : Exception { }
2. 不要使用异常控制流程
避免:
try { ... } catch { ... } // 控制逻辑
异常应该保留给意外情况,而不是正常控制流程。
因为异常的代价比较高
八、文件与项目结构
1. 每个类型单独一个文件
除非:
- 小型私有辅助类
- 局部类型
2. 文件命名
文件名与主类名一致:
OrderService.cs
3. using 指令
按以下顺序分组——每组之间空一行:
- System.* 命名空间
- 第三方包
- 当前项目命名空间
示例:
using System; using System.Collections.Generic; using Newtonsoft.Json; using MyApp.Core;
九、异步编程规范(微软官方 async 规则)
1. 异步方法必须以 Async 结尾
public Task SaveAsync();
2. 仅在使用 await 时将方法标记为 async
3. ConfigureAwait
库代码中使用:
await task.ConfigureAwait(false);
十、不可变性与集合规范
1. 优先使用只读字段
private readonly ILogger _logger;
2. 公开集合使用 IReadOnlyList / IEnumerable
避免暴露可变集合类型。
评论