- 开头
- `bool`类型的变量
- 常用缩写
- 变量命名规范
- `camelCase`: 私有字段,局部变量,入参
- `PascalCase`: 命名空间、类名,方法名
- `snake_ case`、 `kebab_case:` 不使用
- 一般方法
- 名称遵守`PascalCase`命名规范
- 例外情况:
- 异步方法
- 异步方法
- 例外情况
- 合理选择单词
- 选择最合适且被广泛接受的单词描述某个意思
- 避免使用过于宽泛或与标准库重名的词汇
- 布尔类型的成员一般以ls、Has、 Can开头
- 使用偏正式的单词,而不是口语化的单词
- 语法与时态
- 一般使用第三人称单数(可以考虑使用`复数`形式)
- 尽量不要使用单复数不符合常见形式的(可适当`违背`词汇或语法)
- 考虑时态习惯
- 更多... ...
- 名称写清晰且完整(例外情形需遵守普遍习惯)
- 扩展方法尽量简洁且清晰
- 符合经典命名习惯
- 杜绝C/C++、MATLAB、 JAVA等命名习惯
- 学习与提高
开头
bool类型的变量
Is或者Has开头
常用缩写
三个字母以下的全大写,超过的首字母大写,三个字母的都行(WPF Wpf)
变量命名规范
camelCase: 私有字段,局部变量,入参
-
_camelCase: 使用依赖注入时更为推荐
一看到_就知道是私有字段 -
s_ camelCase、m_ camelCase: 一般不使用
s开头static,m开头member,t开头temp -
@bool、@object: 使用关键字作为名称
C#的特殊用法,可以把关键字,类名作为名称
PascalCase: 命名空间、类名,方法名
- IPascalCase:接口名
- TPascalCase:泛型类型名
- PascalCaseAttribute: 特性
- PascalCaseProperty:依赖属性
snake_ case、 kebab_case: 不使用
一般方法
名称遵守PascalCase命名规范
- 无论是否为公共方法,均首字母大写
- 选择合适的动词(或动词+名词)
- 非公共方法可为名称添加
Internal、Impl(implementation)等字眼
例外情况:
- 局部方法
- 用于注册事件的方法(
Window_ Loaded)
异步方法
异步方法
异步方法以Async结尾
- 和同名的同步方法进行区分
- 便于快速判断调用的方法是否需要等待
例外情况
- 人尽皆知的方法(
Task. Delay、Task.WhenAll) - 控制器(
Controller) 中的方法
合理选择单词
选择最合适且被广泛接受的单词描述某个意思
Order应该用于排序(orderby), 而不是用于命令Apply用于表达“应用”, 而不是“申请”Command常用于名词而非动词
避免使用过于宽泛或与标准库重名的词汇
Core、Main、Action、Math
布尔类型的成员一般以ls、Has、 Can开头
IsValid、lsActive、HasErrors、CanExecuteIfSuccess、ChecklfEmpty错误的例子
使用偏正式的单词,而不是口语化的单词
Visibilityvs.Seen,Selection、Optionvs.Choosevs.前面的好
语法与时态
一般使用第三人称单数(可以考虑使用复数形式)
Equals、lsEqual、AreEqual、DependsOn
尽量不要使用单复数不符合常见形式的(可适当违背词汇或语法)
Persons、PersonListvs.PeopleInfos、Datas(Data 的单数是Datum)
考虑时态习惯
OnPropertyChanged、Closing&Closed
更多… …
名称写清晰且完整(例外情形需遵守普遍习惯)
CancellationTokenSource、OperationCanceledExceptionIsCompletedSuccessfullySendCachesvs.SendAllCachedUserData
扩展方法尽量简洁且清晰
- this byte[]:
BytesTolntvs.Tolnt32
符合经典命名习惯
TryGetValue、TryParse、ThrowlfNull(TryXxxx带out的参数,用于在成功后把巴拉巴拉直接赋值给传入的变量)Colorvs.Colour,Behaviorvs.Behaviour(符合习惯的,项目的,英式或美式)
杜绝C/C++、MATLAB、 JAVA等命名习惯
itoa、num2str、get_value
学习与提高
- 多查词典
- 多看多学别人的代码
- 在源代码中搜索官方的使用习惯
谷歌的C#
微软C#