当前位置: 首页 > news >正文

【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 框架下&#xff0c;目前有 5 个区块链框架项目&#xff1a;Fabric、Sawtooth Lake、Iroha、Burrow 和 Indy。 在模块类下&#xff0c;则有 Hyp…...

如何精细优化网站关键词排名:实战经验分享

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

Ruoyi Cloud 本地启动

本文视频版本&#xff1a;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解析:入门笔记

&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》《MYSQL》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索nginx之旅✨ &#x1f44b; 大家好&#xff01;文本学习和探索Nginx配置。…...

在 Mac 上安装双系统会影响性能吗,安装双系统会清除数据吗?

在 Mac 系统安装并使用双系统已经成为了许多用户办公的选择之一&#xff0c;双系统可以让用户在 Mac 上同时运行 Windows 或其他操作系统。然而&#xff0c;许多用户担心这样做会对 Mac 的性能产生影响。 接下来将给大家介绍 Mac 装双系统会影响性能吗&#xff0c;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个重复字符的最长子串

题目&#xff1a; 题解&#xff1a; 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必读资讯

国家网信办发布《人工智能生成合成内容标识办法&#xff08;征求意见稿&#xff09;》 - 要求所有的AI生成内容都要打标&#xff0c;包括文字、图像、视频、音频… - 文本内容要插入标识符提醒&#xff0c;音频内容要在里面插入提示音 - 对创作者不太友好&#xff0c;对平台…...

量化交易需要注意的关于股票交易挂单排队规则的问题

炒股自动化&#xff1a;申请官方API接口&#xff0c;散户也可以 python炒股自动化&#xff08;0&#xff09;&#xff0c;申请券商API接口 python炒股自动化&#xff08;1&#xff09;&#xff0c;量化交易接口区别 Python炒股自动化&#xff08;2&#xff09;&#xff1a;获取…...

应急响应实战---是谁修改了我的密码?

前言&#xff1a;此次应急响应为真实案例&#xff0c;客户反馈无法通过密码登录服务器&#xff0c;疑似服务器被入侵 0x01 如何找回密码&#xff1f; 客户服务器为windows server2019&#xff0c;运维平台为PVE平台&#xff1b;实际上无论是windows系统或者是linux系统&#…...

知识的通用性

概述 很久没有写文章了&#xff0c;因为集团公司当前在大刀阔斧的改革&#xff0c;人员精简&#xff0c;很多事情都合并到同一个人身上&#xff0c;同时将内部的沟通软件平台又做一次大的切换&#xff0c;很多资料都需要重新的整理。 所以&#xff0c;抱歉&#xff0c;很多内…...

36岁,大厂女程序员,中年失业后,我开始接受自己的平凡,并深耕自己

作为80后秦岭大山里面的穷苦农民工家的孩子&#xff0c;从小因为讨厌做家务&#xff0c;做农活&#xff0c;而且家里孩子众多&#xff0c;物质匮乏&#xff0c;从小就特别渴望走出大山。 上学的时候&#xff0c;通过刻苦努力&#xff0c;成绩也还算可以&#xff0c;经常受到老师…...

shader 案例学习笔记之mix函数

mix函数&#xff1a; 在两个值之间进行插值&#xff1b; 使用&#xff1a; #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 日&#xff0c;OpenAI 推出全新模型 o1&#xff0c;它是该公司计划推出的一系列“推理”模型中的首个&#xff0c;也就是此前业内传闻许久的“Strawberry&#xff08;草莓&#xff09;”项目。 据悉&#xff0c;o1 模型在众多任务中能够比人类更…...

心觉:以终为始,帮你精准实现目标

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

【Kubernetes】linux centos安装部署Kubernetes集群

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

canlog-vci can记录仪,速采仪如何用VBDSP进行解析曲线

如下图所示&#xff0c;VBDSP支持绘制解析曲线 添加解析曲线步骤 &#xff08;1&#xff09;在线播放DBC解析曲线 ① 添加要解析的规则&#xff0c;自定义规则/DBC解析规则、J1939协议、CANopen协议&#xff1b; ② 选中设备&#xff0c;点击“分析”栏中的“曲线”&#xff0…...

JCO|病理AI是精准医疗的未来吗?|个人观点·24-09-13

小罗碎碎念 今日顶刊&#xff1a;JCO 这篇文章于24-09-11发表于J Clin Oncol&#xff0c;目前IF42.1&#xff0c;但是注意&#xff0c;这篇文章是一篇观点类文章&#xff0c;而不是我们常规意义上的那种科研型文章。 我在原作者的基础上补充了很多精美插图&#xff0c;并且根据…...

idea一键自动化部署项目

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

Mybatis-plus复习篇

文章目录 1.MyBatis-plus基础1.1.mybatis-plus简介1.2.基本使用1.3.注解映射主键生成策略 1.4.命名转换问题1.5.关闭命名转换功能 2.BaseMapper核心接口 1.MyBatis-plus基础 1.1.mybatis-plus简介 MyBatis-Plus&#xff08;简称 MP&#xff09;是一个 MyBatis的增强工具&…...

Leetcode 109.有序链表转换二叉搜索树(Medium)

给定一个单链表的头节点 head &#xff0c;其中的元素 按升序排序 &#xff0c;将其转换为 平衡 二叉搜索树。 示例 1: 输入: head [-10,-3,0,5,9] 输出: [0,-3,9,-10,null,5] 解释: 一个可能的答案是[0&#xff0c;-3,9&#xff0c;-10,null,5]&#xff0c;它表示所示的高度…...

[数据集][目标检测]河道垃圾检测数据集VOC+YOLO格式2274张8类别

数据集格式&#xff1a;Pascal VOC格式YOLO格式(不包含分割路径的txt文件&#xff0c;仅仅包含jpg图片以及对应的VOC格式xml文件和yolo格式txt文件) 图片数量(jpg文件个数)&#xff1a;2274 标注数量(xml文件个数)&#xff1a;2274 标注数量(txt文件个数)&#xff1a;2274 标注…...

python vtk 绘制圆柱体和包围盒

基本的代码如下&#xff0c; import vtkcylinder vtk.vtkCylinderSource() cylinder.SetRadius(3.0) cylinder.SetHeight(10.0) cylinder.SetResolution(50)boundsFilter vtk.vtkOutlineFilter() boundsFilter.SetInputConnection(cylinder.GetOutputPort())mapper vtk.vtk…...

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)

Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络) 文章目录 Fisco Bcos 2.11.0通过网络和本地二进制文件搭建单机节点联盟链网络(搭建你的第一个区块链网络)前言一、Ubuntu依赖安装二、创建操作目录, 下载build_chain.sh脚本2.1 先…...

【Canvas与表盘】绘制黄蓝两色简约表盘

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>黄蓝卡通手表</title><style type"text/css">…...

大数据-128 - Flink 并行度设置 细节详解 全局、作业、算子、Slot

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…...

图新地球-将地图上大量的地标点批量输出坐标到csv文件【kml转excel】

0.序 有很多用户需要在卫星影像、或者无人机航测影像、倾斜模型上去标记一些地物的位置&#xff08;如电线杆塔、重点单位、下水盖等&#xff09; 标记的位置最终又需要提交坐标文本文件给上级单位或者其他部门使用&#xff0c;甚至需要转为平面直角坐标。 本文的重点是通过of…...

Git提交有乱码

服务器提交记录如图 可知application.properties中文注释拉黄线 &#xff0c;提示Unsupported characters for the charset ISO-8859-1 打开settings - Editor - File Encodings 因为我们项目的其他文件都是UTF-8&#xff0c;所以&#xff0c;我们将默认值都改成UTF-8 然后…...

leetcode hot100_part4_子串

2024/4/20—4/21 560.和为K的子数组 前缀和哈希表&#xff0c;做二叉树的时候也有这个套路。注意细节&#xff0c;遍历到当前前缀和的时候是先找结果个数还是先加入哈希&#xff1f;应该先找结果个数&#xff0c;不然的话&#xff0c;当前位置也算上了&#xff08;因为是前缀和…...