首页 > 编程语言 >【C#】命名规范

【C#】命名规范

时间:2024-09-09 09:22:15浏览次数:11  
标签:代码 string C# void 规范 number 命名 public

文章目录

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 racers
                         where 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 practice
      if (number > 0)
      {
           Console.WriteLine(number);
       }

       //Bad practice
      if (
            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

标签:代码,string,C#,void,规范,number,命名,public
From: https://blog.csdn.net/weixin_44231544/article/details/141553891

相关文章

  • 【JavaScript系列八】—讲述JS学习历程的知识分享!
    前言本篇主要讲述JS中较为重要的一环,函数的用法,深拷贝和浅拷贝的概念和区别,闭包和递归,包括一些案例:例如递归实现斐波那契数列,求阶乘等等一、关于函数定义函数的方式function关键字函数表达式(匿名函数)varfn=function(){}newfunction()函数的调用及其this指向普通函数—......
  • 【JavaScript系列九】—讲述JS学习历程的知识分享!
    前言本篇主要是讲述ES6的新增语法和相关运用一、ES6ES的全称是ECMAScript,它是由ECMA国际标准化组织,制定的一项脚本语言的标准化规范。泛指2015年6月之后发布的版本为什么使用ES6语言更加完善功能更加强大变量提升特性增加了程序运行时的不确定性语法过于......
  • cross-plateform 跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?
    跨平台系列cross-plateform跨平台应用程序-01-概览cross-plateform跨平台应用程序-02-有哪些主流技术栈?cross-plateform跨平台应用程序-03-如果只选择一个框架,应该选择哪一个?cross-plateform跨平台应用程序-04-ReactNative介绍cross-plateform跨平台应用程序-05-Flut......
  • 南沙信奥赛C++陈老师解一本通题: 1171:大整数的因子
    ​ 【题目描述】已知正整数k满足2≤k≤9,现给出长度最大为30位的十进制非负整数c,求所有能整除c的k。【输入】一个非负整数c,c的位数≤30。【输出】若存在满足 c%k==0的k,从小到大输出所有这样的k,相邻两个数之间用单个空格隔开;若没有这样的k,则输出"none"。【输入样......
  • python3 ModuleNotFoundError: No module named 'CommandNotFound'
    前言python3报错:ModuleNotFoundError:Nomodulenamed'CommandNotFound'这是linux安装多版本python时的一个遗留问题,如果修改了默认系统的/usr/bin/python的软连接到新安装的版本,然后在/usr/bin下将名为python3的软链接指向了新版本的python。因为Python版......
  • C#查漏补缺----值类型与引用类型,值类型一定分配在栈上吗?
    前言环境:.NET8.0系统:Windows11参考资料:《CLRviaC#》,《.NetCore底层入门》,《.NET内存管理宝典》栈空间与堆空间程序运行过程中,需要保存各种各样的数据。数据根据它们的生命周期从不同位置分配,每个线程都有独立的栈空间(StackSpace)。栈空间主要用于保存被调用方法......
  • CSS圆角边框
    <!DOCTYPEhtml><htmllang="en"><head><metacharset="UTF-8"><metaname="viewport"content="width=device-width,initial-scale=1.0"><title>盒模型练习</title>&l......
  • 【SQL数据库技术开发】第34课时-数据库SQL CHECK 约束
    SQL CHECK 约束SQLCHECK约束CHECK约束用于限制列中的值的范围。如果对单个列定义CHECK约束,那么该列只允许特定的值。如果对一个表定义CHECK约束,那么此约束会基于行中其他列的值在特定的列中对值进行限制。CREATETABLE时的SQLCHECK约束下面的SQL在"Per......
  • 办公软件:管理和组织菜单栏图标Bartender 4 for Mac
    Bartender是一款专为macOS用户设计的强大软件,主要用于管理和组织菜单栏图标。软件下载地址主要特点:一、菜单栏图标管理菜单栏图标隐藏:用户可隐藏菜单栏图标,仅在需要时显示,减少视觉干扰,使界面更整洁专注。可自定义的菜单栏排序:提供直观拖放界面,用户能自定义图标的顺序和......
  • 多连接数据库管理工具Navicat Premium 16 for Mac
    NavicatPremium16forMac是一款功能强大且易于使用的多连接数据库管理工具。软件下载地址一、主要功能无缝数据迁移:数据传输、数据同步和结构同步功能可助力轻松、快速地迁移数据,降低开销。提供跨各种数据库管理系统(DBMS)传输数据的详细分步指导。可比较和同步数据库,在......