C# 命名规范

  • 开头
    • `bool`类型的变量
    • 常用缩写
  • 变量命名规范
    • `camelCase`: 私有字段,局部变量,入参
    • `PascalCase`: 命名空间、类名,方法名
    • `snake_ case`、 `kebab_case:` 不使用
  • 一般方法
    • 名称遵守`PascalCase`命名规范
    • 例外情况:
  • 异步方法
    • 异步方法
    • 例外情况
  • 合理选择单词
    • 选择最合适且被广泛接受的单词描述某个意思
    • 避免使用过于宽泛或与标准库重名的词汇
    • 布尔类型的成员一般以ls、Has、 Can开头
    • 使用偏正式的单词,而不是口语化的单词
  • 语法与时态
    • 一般使用第三人称单数(可以考虑使用`复数`形式)
    • 尽量不要使用单复数不符合常见形式的(可适当`违背`词汇或语法)
    • 考虑时态习惯
  • 更多... ...
    • 名称写清晰且完整(例外情形需遵守普遍习惯)
    • 扩展方法尽量简洁且清晰
    • 符合经典命名习惯
    • 杜绝C/C++、MATLAB、 JAVA等命名习惯
  • 学习与提高

开头

bool类型的变量

Is或者Has开头

常用缩写

三个字母以下的全大写,超过的首字母大写,三个字母的都行(WPF Wpf


变量命名规范

camelCase: 私有字段,局部变量,入参

  • _camelCase: 使用依赖注入时更为推荐
    一看到 _ 就知道是私有字段

  • s_ camelCasem_ camelCase: 一般不使用
    s开头staticm开头membert开头temp

  • @bool@object: 使用关键字作为名称
    C#的特殊用法,可以把关键字,类名作为名称

PascalCase: 命名空间、类名,方法名

  • IPascalCase:接口名
  • TPascalCase:泛型类型名
  • PascalCaseAttribute: 特性
  • PascalCaseProperty:依赖属性

snake_ casekebab_case: 不使用


一般方法

名称遵守PascalCase命名规范

  • 无论是否为公共方法,均首字母大写
  • 选择合适的动词(或动词+名词)
  • 非公共方法可为名称添加InternalImplimplementation)等字眼

例外情况:

  • 局部方法
  • 用于注册事件的方法(Window_ Loaded)

异步方法

异步方法

异步方法以Async结尾

  • 和同名的同步方法进行区分
  • 便于快速判断调用的方法是否需要等待

例外情况

  • 人尽皆知的方法(Task. DelayTask.WhenAll)
  • 控制器(Controller) 中的方法

合理选择单词

选择最合适且被广泛接受的单词描述某个意思

  • Order应该用于排序(orderby), 而不是用于命令
  • Apply用于表达“应用”, 而不是“申请”
  • Command常用于名词而非动词

避免使用过于宽泛或与标准库重名的词汇

  • CoreMainActionMath

布尔类型的成员一般以ls、Has、 Can开头

  • IsValidlsActiveHasErrorsCanExecute
  • IfSuccessChecklfEmpty 错误的例子

使用偏正式的单词,而不是口语化的单词

  • Visibility vs. SeenSelectionOption vs. Choose vs.前面的好

语法与时态

一般使用第三人称单数(可以考虑使用复数形式)

  • EqualslsEqualAreEqualDependsOn

尽量不要使用单复数不符合常见形式的(可适当违背词汇或语法)

  • PersonsPersonList vs. People
  • InfosDatasData 的单数是Datum

考虑时态习惯

  • OnPropertyChangedClosing & Closed

更多… …

名称写清晰且完整(例外情形需遵守普遍习惯)

  • CancellationTokenSourceOperationCanceledException
  • IsCompletedSuccessfully
  • SendCaches vs. SendAllCachedUserData

扩展方法尽量简洁且清晰

  • this byte[]: BytesTolnt vs. Tolnt32

符合经典命名习惯

  • TryGetValueTryParseThrowlfNullTryXxxxout的参数,用于在成功后把巴拉巴拉直接赋值给传入的变量)
  • Color vs. ColourBehavior vs. Behaviour (符合习惯的,项目的,英式或美式)

杜绝C/C++、MATLAB、 JAVA等命名习惯

  • itoanum2strget_value

学习与提高

  • 多查词典
  • 多看多学别人的代码
  • 在源代码中搜索官方的使用习惯

谷歌的C#

微软C#

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/42636.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【CSS】缩写属性place-items

place-items 是 CSS 中的一个简写属性,它允许在相关的布局(如 Grid 或 Flexbox)中同时沿着块级和内联方向对齐元素。这个属性是 align-items 和 justify-items 属性的简写形式。如果未提供第二个值,则第一个值将作为第二个值的默认…

论文翻译 | (DSP)展示-搜索-预测:为知识密集型自然语言处理组合检索和语言模型

摘要 检索增强式上下文学习已经成为一种强大的方法,利用冻结语言模型 (LM) 和检索模型 (RM) 来解决知识密集型任务。现有工作将这些模型结合在简单的“检索-读取”流程中,其中 RM 检索到的段落被插入到 LM 提示中。 为了充分发挥冻结 LM 和 RM 的…

ARM/Linux嵌入式面经(十一):地平线嵌入式实习

地平线嵌入式实习面经 1.自我介绍 等着,在给大哥们准备了。 2.spi与iic协议可以连接多个设备吗?最多多少个?通讯时序。 这是几个问题,在回答的时候。不要一问就开口,花几秒钟沉吟思考整理一下自己的思路。 这个问题问了几个点?每个点的回答步骤。 是我的话,我会采用以…

# Sharding-JDBC 从入门到精通(9)- 综合案例(二)添加商品

Sharding-JDBC 从入门到精通(9)- 综合案例(二)添加商品 一、Sharding-JDBC 综合案例-添加商品-dao 1、在 shopping 子工程(子模块)中,创建 dao 接口类 ProductDao.java /*** dbsharding\sh…

基于深度学习LightWeight的人体姿态之行为识别系统源码

一. LightWeight概述 light weight openpose是openpose的简化版本,使用了openpose的大体流程。 Light weight openpose和openpose的区别是: a 前者使用的是Mobilenet V1(到conv5_5),后者使用的是Vgg19(前10…

哈希表——C语言

哈希表(Hash Table)是一种高效的数据结构,能够在平均情况下实现常数时间的查找、插入和删除操作。 哈希表的核心是哈希函数,哈希函数是一个将输入数据(通常称为“键”或“key”)转换为固定长度的整数的函数…

Efficient Contrastive Learning for Fast and Accurate Inference on Graphs

发表于:ICML24 推荐指数: #paper/⭐⭐⭐ 创新点一颗星,证明三颗星(证明的不错,值得借鉴,但是思路只能说还行吧) 如图, 本文采取的创新点就是MLP用原始节点,GCN用邻居节点的对比学习.这样,可以加快运算速度 L E C L − 1 ∣ V ∣ ∑ v ∈ V 1 ∣ N ( v ) ∣ ∑ u ∈ N ( v )…

一篇文章Scala语言入门

Scala是一种现代编程语言,它结合了面向对象编程和函数式编程的特性,使得编写简洁、可扩展和高效的代码成为可能。 1. 什么是Scala? Scala(Scalable Language)是一种面向对象和函数式编程语言。它运行在JVM&#xff0…

k8s 部署 springboot 项目内存持续增长问题分析解决

写在前面 工作中遇到,请教公司前辈解决,简单整理记忆博文内容涉及一次 GC 问题的分析以及解决理解不足小伙伴帮忙指正 😃,生活加油 99%的焦虑都来自于虚度时间和没有好好做事,所以唯一的解决办法就是行动起来,认真做完…

语音识别FBank特征提取学习笔记

语音识别就是把一段语音信号转换成对应的文本信息,这一过程包括四个大的模块,分别是:特征提取、声学模型、语言模型、字典与解码。 本篇就来梳理一下特征提取模块的实现思路和方法。 常用的语音特征有: 梅尔频率倒谱系数&#x…

学生管理系统(通过顺序表,获取连续堆区空间实现)

将学生的信息,以顺序表的方式存储(堆区),并且实现封装函数 : 1】顺序表的创建, 2】判满、 3】判空、 4】往顺序表里增加学生信息、 5】遍历学生信息 6】任意位置插入学生信息 7】任意位置删除学生信…

0301STM32GPIO外设输出

STM32GPIO外设输出 STM32内部的GPIO外设GPIO简介基本结构GPIO位结构输入部分:输出部分: GPIO八种工作模式浮空/上拉/下拉输入模拟输入开漏/推挽输出复用开漏/推挽输出 手册寄存器描述GPIO功能描述外设的GPIO配置GPIO寄存器描述端口输入数据寄存器端口输出…

QT入门笔记-自定义控件封装 30

具体代码如下: QT core guigreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c17# You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. #DEFINES QT_DISABLE_DEPRECATED_BEFORE0x060000 …

并查集(还有反集也在)

一.定义 定义: 并查集是一种树型的数据结构,用于处理一些不相交集合的合并及查询问题(即所谓的并、查)。比如说,我们可以用并查集来判断一个森林中有几棵树、某个节点是否属于某棵树等。 主要构成: 并查集…

PHP-实例-文件上传

1 需求 2 basename 在 PHP 中,basename() 函数用于返回路径中的文件名部分。如果路径中包含了文件扩展名,则该函数也会返回它。如果路径的结尾有斜杠(/)或反斜杠(\),则 basename() 函数会返回空…

Android计算器界面的设计——表格布局TableLayout实操

目录 任务目标任务分析任务实施 任务目标 使用TextView、Button等实现一个计算器界面,界面如图1所示。 图1 计算器界面效果图 任务分析 界面整体使用表格布局,第一行使用一个TextView控件,横跨4列,中间4行4列,最后一…

Laravel HTTP客户端:网络请求的瑞士军刀

标题:Laravel HTTP客户端:网络请求的瑞士军刀 Laravel的HTTP客户端是一个功能强大的工具,它提供了一种简洁、直观的方式来发送HTTP请求。无论是与外部API集成,还是进行网络数据抓取,Laravel的HTTP客户端都能满足你的需…

小红书选品中心商家采集 小红书商家电话采集软件

可采集名称销量评分联系方式等 需要有1000粉丝以上已实名认证过的小红书达人才可以使用 以下是一个示例程序,可以用于批量获取小红书选品中心商家的信息: import requestsdef get_merchants(page_num):url f"https://www.xiaohongshu.com/selec…

git 添加本地分支, clean

//以develop为源创建本地分支fromdevelop git checkout -b fromdevelop git add . git commit -m "local" git checkout -b local/dev //切换到远程分支. git checkout dev git clean_git clean -f -d-CSDN博客 git clean -f -d #删除当前目录下没有被track…

RAC spfile 坑 +data INSTANCE_NUMBER thread x is mounted by another instance

RAC相关三个参数 thread reset 就可以默认 instance_number 需要单独设置 sid‘SIDX’ cluster_database boolean TRUE SQL> alter system reset instance_number sid* scopespfile; alter system reset instance_number sid* scopespfile …