【C#】命名规范
文章目录
- C# 命名规范
- 使用Pascal case
- 使用Camel case
- 方法、属性、类命名见名知义
- LINQ查询变量使用有意义的名称
- 如何声明成员变量和字段
- 正确格式化和缩进代码
- 如何撰写备注
- 通用C#编码最佳实践
- 如何将值与空字符串进行比较
- 使用异常处理
- 使用&&和||可获得更好的性能
- 单一职责
- 使用枚举表示离散值
- 如何将字符串变量与用户输入进行比较
- 原文
C# 命名规范
使用Pascal case
在命名类、结构、方法、属性或常量字段时,通常首选Pascal大小写
namespace ExampleApp
{class ClassNamingConvention{public const string ConstantFieldNamingConvention = "C#";public string PropertiesNamingConvention { get; set; }public void MethodNamingConvention(){//type something here}}
}
命名接口时,它通常以大写字母I作为前缀。命名接口时也可以使用Pascal大小写。
public interface IInterfaceNamingConvention
{//type something here
}
使用Camel case
驼峰用于命名方法参数、私有字段和局部变量。私有字段通常以_作为前缀。
private string _fieldsNamingConvention;public void MethodNamingConvention(string methodArgsNamingConvention)
{string localVariables = "string here ...";
}
方法、属性、类命名见名知义
始终为类、方法和属性使用有意义且不言自明的名称。用它们的作用来命名属性、方法和类是一种很好的做法。这样,只需阅读名称,你就可以很容易地知道它的确切作用。
class AppNotification{private string _appStatus;public string AppStatus{get { return _appStatus; }set { _appStatus = value; }}public static void SendNotification(){//type something here . . .}}
LINQ查询变量使用有意义的名称
始终为LINQ查询变量使用有意义且不言自明的名称,如下例所示。
public void QueryRacers()
{var racersInItaly = from racer in racerswhere racer.City == "Lazio"select racer.Name;
}
C# Code Layouts and Comments
如何声明成员变量和字段
始终在类的顶部声明所有成员变量和字段。当在类的顶部声明字段时,很容易看到类正在使用的所有变量,并理解类的整体状态。
在C#中,在类的顶部声明字段也很重要,因为它使代码更有组织性和可读性,特别是在处理大型类或与团队合作时。这使得其他人更容易理解代码并进行更改。
class Car
{private int _carSpeed;public int CarSpeed{get { return _carSpeed; }set { _carSpeed = value; }}public static void GetMaxSpeed(){//...}public static void GetMaxAcceleration(){//...}
}
正确格式化和缩进代码
当涉及到代码布局时,为了可读性和清晰的代码组织,格式化和正确缩进代码非常重要。
每行只写一条语句是很好的做法。例如:
public void Numbers(int number)
{//Good practiceif (number > 0){Console.WriteLine(number);}//Bad practiceif (number < 0){Console.WriteLine(number);}}
如何撰写备注
最好的做法是以大写文本开始注释,并以句点结束。(英文注释)
写评论对整个团队都有帮助。它使代码更具可读性、可维护性和可理解性。将注释放在新行上,而不是放在代码末尾,这是一种很好的做法。例如:
class Car
{public string Name { get; set; }//We place comments here. //And end with a period.public void Move(){//...}
}
通用C#编码最佳实践
如何将值与空字符串进行比较
在将值与空字符串进行比较时,请尝试String.Empty而不是“”。使用String.Empty可以提高代码的可读性,并明确表示比较是针对空字符串的。这使得将来更容易理解和维护代码。
public void NameCheck(string name)
{if(name == String.Empty){}}
使用异常处理
使用异常处理来优雅地处理错误和异常。这有助于防止代码崩溃,并使其更加健壮。对于大多数异常处理,使用try-catch语句是很好的做法。
public void NameCheck(string name){try{//type code here}catch (Exception exception) { }{//type code here}}
使用&&和||可获得更好的性能
为了提高应用程序的性能,在执行比较时最好使用&&而不是&,使用||而不是|,如下例所示。
public void Numbers(int number)
{if (number > 2 && number < 4){Console.WriteLine(number);}
}
这是因为&&和||运算符被称为“短路”运算符。这意味着,如果&&运算的第一个操作数为false,则不会计算第二个操作数,因为整个表达式必须为false。
同样,如果||操作的第一个操作数为真,则不会计算第二个操作数,因为整个表达式必须为真。
这反过来又提高了程序的性能。
单一职责
最好将方法限制为单个功能。不要试图将一个类的多个功能组合到一个方法中。这确保了代码的可读性,并帮助您避免编写“意大利面条式代码”。
class AppNotification
{ public void SendNotification(){//. . .}public void ReceiveNotification(){//. . .}public void MuteNotification(){//. . .}
}
使用枚举表示离散值
使用枚举而不是数字和字符串来表示离散值。枚举提供了一种提高代码质量的方法,使其更具可读性、类型安全性和效率。它们还提供了一种定义一组命名积分常数的方法。
class Car{public enum LoggerType{NewCars,UsedCars,Database}public void DisplayException(string message, LoggerType loggerType){switch (loggerType){case LoggerType.NewCars:Console.WriteLine(LoggerType.NewCars);break;case LoggerType.UsedCars:Console.WriteLine(LoggerType.UsedCars);break;case LoggerType.Database:Console.WriteLine(LoggerType.Database);break;default:Console.WriteLine(message);break;}}}
如何将字符串变量与用户输入进行比较
在将字符串变量与用户输入进行比较之前,始终将其转换为大写或小写是一种很好的做法。
这确保了比较不区分大小写。这使您的代码更具可读性和可维护性,因为它消除了对案例处理逻辑的需求。
class Car{public void DisplayTransactions(){string name = Console.ReadLine();if(name.ToLower() == "Joe"){//...}//Or.if (name.ToUpper() == "Joe"){//...}}}
原文
C# Coding Best Practices – Coding Conventions with Examples
相关文章:
【C#】命名规范
文章目录 C# 命名规范使用Pascal case使用Camel case方法、属性、类命名见名知义LINQ查询变量使用有意义的名称如何声明成员变量和字段正确格式化和缩进代码如何撰写备注 通用C#编码最佳实践如何将值与空字符串进行比较使用异常处理使用&&和||可获得更好的性能单一职责…...

超级帐本(Hyperledger)
1. Hyperledger 项目 Hyperledger 下有两类项目:第一类是区块链框架项目;第二类是支持这些区块链的相关工具或模块。 在 Hyperledger 框架下,目前有 5 个区块链框架项目:Fabric、Sawtooth Lake、Iroha、Burrow 和 Indy。 在模块类下,则有 Hyp…...

如何精细优化网站关键词排名:实战经验分享
在数字营销日益激烈的今天,我深知每一个关键词的排名都关乎着网站的流量与转化。凭借多年的实战经验,我深刻体会到,要想在浩如烟海的网络世界中脱颖而出,精细化的关键词优化策略至关重要。今天,我将从实战角度出发&…...

Ruoyi Cloud 本地启动
本文视频版本:https://www.bilibili.com/video/BV1SNtueBE9M 参考 http://doc.ruoyi.vip/ https://gitee.com/y_project/RuoYi-Cloud https://blog.csdn.net/cs_dnzk/article/details/135289966 https://doc.ruoyi.vip/ruoyi-cloud/cloud/seata.html#%E5%9F%BA%E6…...

Nginx解析:入门笔记
🌈 个人主页:danci_ 🔥 系列专栏:《设计模式》《MYSQL》 💪🏻 制定明确可量化的目标,坚持默默的做事。 ✨欢迎加入探索nginx之旅✨ 👋 大家好!文本学习和探索Nginx配置。…...

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?
在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一,双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而,许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗,Mac装双系统…...

vue3提交按钮限制重复点击
下载lodash npm install lodash 引入并使用 <template><div click"submit()">提交</div> </template><script setup>import { debounce } from lodash;const submit debounce(() > {//业务代码},2000,{leading: true,trailing:…...

Java | Leetcode Java题解之第395题至少有K个重复字符的最长子串
题目: 题解: class Solution {public int longestSubstring(String s, int k) {int ret 0;int n s.length();for (int t 1; t < 26; t) {int l 0, r 0;int[] cnt new int[26];int tot 0;int less 0;while (r < n) {cnt[s.charAt(r) - a];…...

20240915 每日AI必读资讯
国家网信办发布《人工智能生成合成内容标识办法(征求意见稿)》 - 要求所有的AI生成内容都要打标,包括文字、图像、视频、音频… - 文本内容要插入标识符提醒,音频内容要在里面插入提示音 - 对创作者不太友好,对平台…...
量化交易需要注意的关于股票交易挂单排队规则的问题
炒股自动化:申请官方API接口,散户也可以 python炒股自动化(0),申请券商API接口 python炒股自动化(1),量化交易接口区别 Python炒股自动化(2):获取…...

应急响应实战---是谁修改了我的密码?
前言:此次应急响应为真实案例,客户反馈无法通过密码登录服务器,疑似服务器被入侵 0x01 如何找回密码? 客户服务器为windows server2019,运维平台为PVE平台;实际上无论是windows系统或者是linux系统&#…...
知识的通用性
概述 很久没有写文章了,因为集团公司当前在大刀阔斧的改革,人员精简,很多事情都合并到同一个人身上,同时将内部的沟通软件平台又做一次大的切换,很多资料都需要重新的整理。 所以,抱歉,很多内…...

36岁,大厂女程序员,中年失业后,我开始接受自己的平凡,并深耕自己
作为80后秦岭大山里面的穷苦农民工家的孩子,从小因为讨厌做家务,做农活,而且家里孩子众多,物质匮乏,从小就特别渴望走出大山。 上学的时候,通过刻苦努力,成绩也还算可以,经常受到老师…...

shader 案例学习笔记之mix函数
mix函数: 在两个值之间进行插值; 使用: #ifdef GL_ES precision mediump float; #endifuniform vec2 u_resolution; uniform float u_time;vec3 colorA vec3(0.149,0.141,0.912); vec3 colorB vec3(1.0,0.83,0.224);void main(){vec2 st…...

OpenAI草莓正式发布,命名o1
一、相关介绍 当地时间 9 月 12 日,OpenAI 推出全新模型 o1,它是该公司计划推出的一系列“推理”模型中的首个,也就是此前业内传闻许久的“Strawberry(草莓)”项目。 据悉,o1 模型在众多任务中能够比人类更…...

心觉:以终为始,帮你精准实现目标
Hi,我是心觉,与你一起玩转潜意识、脑波音乐和吸引力法则,轻松掌控自己的人生! 挑战每日一省写作169/1000天 假设你的目标是 一年内赚到150万。我们可以通过“以终为始”和“以始为终”的结合来帮助你实现这个目标 以下是完整的…...

【Kubernetes】linux centos安装部署Kubernetes集群
【Kubernetes】centos安装Kubernetes集群 1、环境准备 系统centos7 配置yum源参考文章 Centos系统换yum源 yum -y update 步骤1-3是所有主机都要配置,主机名和hosts配置完后可以使用工具命令同步 1.1 主机 一主二从 主机名ipk8smaster192.168.59.148k8snode11…...

canlog-vci can记录仪,速采仪如何用VBDSP进行解析曲线
如下图所示,VBDSP支持绘制解析曲线 添加解析曲线步骤 (1)在线播放DBC解析曲线 ① 添加要解析的规则,自定义规则/DBC解析规则、J1939协议、CANopen协议; ② 选中设备,点击“分析”栏中的“曲线”࿰…...

JCO|病理AI是精准医疗的未来吗?|个人观点·24-09-13
小罗碎碎念 今日顶刊:JCO 这篇文章于24-09-11发表于J Clin Oncol,目前IF42.1,但是注意,这篇文章是一篇观点类文章,而不是我们常规意义上的那种科研型文章。 我在原作者的基础上补充了很多精美插图,并且根据…...

idea一键自动化部署项目
文章目录 前言一、 IDEA插件安装1. 首先下载 Alibaba Cloud Toolkit 插件2. 插件下载完成后重启IDEA 二、SpringBoot项目准备1. pom.xml 文件2. controller3. 启动类 三、SpringBoot项目jar包部署1. Alibaba Cloud Toolkit 插件服务器配置2. 主机 IP、用户名、密码 点击测试链接…...

第19节 Node.js Express 框架
Express 是一个为Node.js设计的web开发框架,它基于nodejs平台。 Express 简介 Express是一个简洁而灵活的node.js Web应用框架, 提供了一系列强大特性帮助你创建各种Web应用,和丰富的HTTP工具。 使用Express可以快速地搭建一个完整功能的网站。 Expre…...

多云管理“拦路虎”:深入解析网络互联、身份同步与成本可视化的技术复杂度
一、引言:多云环境的技术复杂性本质 企业采用多云策略已从技术选型升维至生存刚需。当业务系统分散部署在多个云平台时,基础设施的技术债呈现指数级积累。网络连接、身份认证、成本管理这三大核心挑战相互嵌套:跨云网络构建数据…...
在软件开发中正确使用MySQL日期时间类型的深度解析
在日常软件开发场景中,时间信息的存储是底层且核心的需求。从金融交易的精确记账时间、用户操作的行为日志,到供应链系统的物流节点时间戳,时间数据的准确性直接决定业务逻辑的可靠性。MySQL作为主流关系型数据库,其日期时间类型的…...
在rocky linux 9.5上在线安装 docker
前面是指南,后面是日志 sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo sudo dnf install docker-ce docker-ce-cli containerd.io -y docker version sudo systemctl start docker sudo systemctl status docker …...
STM32+rt-thread判断是否联网
一、根据NETDEV_FLAG_INTERNET_UP位判断 static bool is_conncected(void) {struct netdev *dev RT_NULL;dev netdev_get_first_by_flags(NETDEV_FLAG_INTERNET_UP);if (dev RT_NULL){printf("wait netdev internet up...");return false;}else{printf("loc…...

Linux相关概念和易错知识点(42)(TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...

企业如何增强终端安全?
在数字化转型加速的今天,企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机,到工厂里的物联网设备、智能传感器,这些终端构成了企业与外部世界连接的 “神经末梢”。然而,随着远程办公的常态化和设备接入的爆炸式…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
在web-view 加载的本地及远程HTML中调用uniapp的API及网页和vue页面是如何通讯的?
uni-app 中 Web-view 与 Vue 页面的通讯机制详解 一、Web-view 简介 Web-view 是 uni-app 提供的一个重要组件,用于在原生应用中加载 HTML 页面: 支持加载本地 HTML 文件支持加载远程 HTML 页面实现 Web 与原生的双向通讯可用于嵌入第三方网页或 H5 应…...

HDFS分布式存储 zookeeper
hadoop介绍 狭义上hadoop是指apache的一款开源软件 用java语言实现开源框架,允许使用简单的变成模型跨计算机对大型集群进行分布式处理(1.海量的数据存储 2.海量数据的计算)Hadoop核心组件 hdfs(分布式文件存储系统)&a…...