C#代码规范

遵循C#代码规范提升代码质量 函数定义和调用时的空格使用也需遵循一致的规则,以便保持代码的整洁与一致性:在函数名和开括号之间不需要空格,而参数列表内部的元素之间则需要适当空格。例如:csharp函数调用时,括号内部的元素同样应遵循空格规则,确保调用的清晰度。例如:csharpNUnit是一个免费的单元测试框架,它兼容JUnit,并且是第一个专门为.NET平台设计的测试框架。NUnit提供了丰富的断言方法,并支持测试属性、测试初始化与清理等高级功能。[Test] 阅读详情

命名惯例和规范


注记 :
Pascal
大小写形式-所有单词第一个字母大写,其他字母小写。
Camel  
大小写形式-除了第一个单词,所有单词第一个字母大写,其他字母小写。

·  类名使用Pascal 大小写形式

public class HelloWorld{ ...}

·  方法使用Pascal 大小写形式

public class HelloWorld{ void SayHello(string name) {  ... }}

·  变量和方法参数使用Camel 大小写形式

public class HelloWorld{ int totalCount = 0; void SayHello(string name) {  string fullMessage = "Hello " + name;  ... }} 

·  不要使用匈牙利方法来命名变量

以前,多数程序员喜欢它-把数据类型作为变量名的前缀而m_作为成员变量的前缀。例如:

string m_sName;int nAge;   

然而,这种方式在.NET编码规范中是不推荐的。所有变量都用camel 大小写形式,而不是用数据类型和m_来作前缀。

·  用有意义的,描述性的词语来命名变量

-
别用缩写。用name, address, salary等代替 nam, addr, sal
-
别使用单个字母的变量象i, n, x 等. 使用 index, temp等
用于循环迭代的变量例外:

for ( int i = 0; i < count; i++ ){ ...}

如果变量只用于迭代计数,没有在循环的其他地方出现,许多人还是喜欢用单个字母的变量(i) ,而不是另外取名。
-
变量名中不使用下划线 (_) 。
-
命名空间需按照标准的模式命名

...

·  文件名要和类名匹配

例如,对于类HelloWorld, 相应的文件名应为 helloworld.cs (或, helloworld.vb)

缩进和间隔

·  缩进用 TAB . 不用 SPACES.。

·  注释需和代码对齐.。

·  花括弧 ( {} ) 需和括号外的代码对齐.。

·  用一个空行来分开代码的逻辑分组。.

bool SayHello (string name) {  string fullMessage = "Hello " + name;  DateTime currentTime = DateTime.Now;  string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString();  MessageBox.Show ( message );  if ( ... )  {   // Do something   // ...   return false;  }  return true; }             

这段代码看起来比上面的好::

bool SayHello ( string name ) {  string fullMessage = "Hello " + name;  DateTime currentTime = DateTime.Now; 
  string message = fullMessage + ", the time is : " + currentTime.ToShortTimeString(); 
  MessageBox.Show ( message ); 
  if ( ... )  {   // Do something   // ...  
   return false;  } 
  return true; }             

·  在一个类中,各个方法需用一空行,也只能是一行分开。

·  花括弧需独立一行,而不象if, for 等可以跟括号在同一行。.
好:

  if ( ... )   {   // Do something  }

不好:

  if ( ... ) {   // Do something  }

·  在每个运算符和括号的前后都空一格。.

好:

  if ( showResult == true )  {   for ( int i = 0; i < 10; i++ )   {    //   }  }

不好:

  if(showResult==true)  {   for(int i= 0;i<10;i++)   {    //   }  }

良好的编程习惯


遵从以下良好的习惯以写出好程序

·  避免使用大文件。如果一个文件里的代码超过300~400行,必须考虑将代码分开到不同类中。

·  避免写太长的方法。一个典型的方法代码在1~25行之间。如果一个方法发代码超过25行,应该考虑将其分解为不同的方法。

·  方法名需能看出它作什么。别使用会引起误解的名字。如果名字一目了然,就无需用文档来解释方法的功能了。

好:

void SavePhoneNumber ( string phoneNumber ) {  // Save the phone number. }


不好:

// This method will save the phone number. void SaveData ( string phoneNumber ) {  // Save the phone number. }

·  一个方法只完成一个任务。不要把多个任务组合到一个方法中,即使那些任务非常小。

好:

// Save the address. SaveAddress (  address );  // Send an email to the supervisor to inform that the address is updated. SendEmail ( address, email );    void SaveAddress ( string address ) {  // Save the address.  // ... }  void SendEmail ( string address, string email ) {  // Send an email to inform the supervisor that the address is changed.  // ... }


不好:

// Save address and send an email to the supervisor to inform that the address is updated. SaveAddress ( address, email ); void SaveAddress ( string address, string email ) {  // Job 1.  // Save the address.  // ...  // Job 2.  // Send an email to inform the supervisor that the address is changed.  // ... }

·  使用C# 或 VB.NET的特有类型,而不是System命名空间中定义的别名类型。

好:

int age; string name; object contactInfo;


不好:

Int16 age; String name; Object contactInfo;

·  别在程序中使用固定数值,用常量代替。

·  别用字符串常数。用资源文件。

·  避免使用很多成员变量。声明局部变量,并传递给方法。不要在方法间共享成员变量。如果在几个方法间共享一个成员变量,那就很难知道是哪个方法在什么时候修改了它的值。

·  必要时使用enum 。别用数字或字符串来指示离散值。
好:

enum MailType {  Html,  PlainText,  Attachment } void SendMail (string message, MailType mailType) {  switch ( mailType )  {   case MailType.Html:    // Do something    break;   case MailType.PlainText:    // Do something    break;   case MailType.Attachment:    // Do something    break;   default:    // Do something    break;  } }           



不好:

void SendMail (string message, string mailType) {  switch ( mailType )  {   case "Html":    // Do something    break;   case "PlainText":    // Do something    break;   case "Attachment":    // Do something    break;   default:    // Do something    break;  } }

·  别把成员变量声明为 public 或 protected。都声明为 private 而使用 public/protected 的Properties.

·  不在代码中使用具体的路径和驱动器名。 使用相对路径,并使路径可编程。

·  永远别设想你的代码是在“C:”盘运行。你不会知道,一些用户在网络或“Z:”盘运行程序。

·  应用程序启动时作些“自检”并确保所需文件和附件在指定的位置。必要时检查数据库连接。出现任何问题给用户一个友好的提示。

·  如果需要的配置文件找不到,应用程序需能自己创建使用默认值的一份。

·  如果在配置文件中发现错误值,应用程序要抛出错误,给出提示消息告诉用户正确值。

·  错误消息需能帮助用户解决问题。永远别用象"应用程序出错", "发现一个错误" 等错误消息。而应给出象 "更新数据库失败。请确保登陆id和密码正确。" 的具体消息。  

·  显示错误消息时,除了说哪里错了,还应提示用户如何解决问题。不要用 象 "更新数据库失败。"这样的,要提示用户怎么做:"更新数据库失败。请确保登陆id和密码正确。"

·  显示给用户的消息要简短而友好。但要把所有可能的信息都记录下来,以助诊断问题。

注释

·  别每行代码,每个声明的变量都做注释。

·  在需要的地方注释。可读性强的代码需要很少的注释。如果所有的变量和方法的命名都很有意义,会使代码可读性很强并无需太多注释。

·  行数不多的注释会使代码看起来优雅。但如果代码不清晰,可读性差,那就糟糕。

·  如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。

·  对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。

·  简言之,要写清晰,可读的代码以致无须什么注释就能理解。

·  对注释做拼写检查,保证语法和标点符号的正确使用。

异常处理

·  不要“捕捉了异常却什么也不做“。如果隐藏了一个异常,你将永远不知道异常到底发生了没有。

·  发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。

·  只捕捉特定的异常,而不是一般的异常。

好:

void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (FileIOException ex)  {   // log error.   //  re-throw exception depending on your case.   throw;  } }

不好:

void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (Exception ex)   {   // Catching general exception is bad... we will never know whether it   // was a file error or some other error.      // Here you are hiding an exception.    // In this case no one will ever know that an exception happened.   return "";    } }

·  不必在所有方法中捕捉一般异常。不管它,让程序崩溃。这将帮助你在开发周期发现大多数的错误。

·  你可以用应用程序级(线程级)错误处理器处理所有一般的异常。遇到”以外的一般性错误“时,此错误处理器应该捕捉异常,给用户提示消息,在应用程序关闭或 用户选择”忽略并继续“之前记录错误信息。

·  不必每个方法都用try-catch。当特定的异常可能发生时才使用。比如,当你写文件时,处理异常FileIOException.

·  别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息

·  显示给用户的消息要简短而友好。但要把所有可能的信息都记录下来,以助诊断问题。

注释

·  别每行代码,每个声明的变量都做注释。

·  在需要的地方注释。可读性强的代码需要很少的注释。如果所有的变量和方法的命名都很有意义,会使代码可读性很强并无需太多注释。

·  行数不多的注释会使代码看起来优雅。但如果代码不清晰,可读性差,那就糟糕。

·  如果应为某种原因使用了复杂艰涩的原理,为程序配备良好的文档和重分的注释。

·  对一个数值变量采用不是0,-1等的数值初始化,给出选择该值的理由。

·  简言之,要写清晰,可读的代码以致无须什么注释就能理解。

·  对注释做拼写检查,保证语法和标点符号的正确使用。

异常处理

·  不要“捕捉了异常却什么也不做“。如果隐藏了一个异常,你将永远不知道异常到底发生了没有。

·  发生异常时,给出友好的消息给用户,但要精确记录错误的所有可能细节,包括发生的时间,和相关方法,类名等。

·  只捕捉特定的异常,而不是一般的异常。

好:

void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (FileIOException ex)  {   // log error.   //  re-throw exception depending on your case.   throw;  } }

不好:

void ReadFromFile ( string fileName ) {  try  {   // read from file.  }  catch (Exception ex)   {   // Catching general exception is bad... we will never know whether it   // was a file error or some other error.      // Here you are hiding an exception.    // In this case no one will ever know that an exception happened.   return "";    } }

·  不必在所有方法中捕捉一般异常。不管它,让程序崩溃。这将帮助你在开发周期发现大多数的错误。

·  你可以用应用程序级(线程级)错误处理器处理所有一般的异常。遇到”以外的一般性错误“时,此错误处理器应该捕捉异常,给用户提示消息,在应用程序关闭或 用户选择”忽略并继续“之前记录错误信息。

·  不必每个方法都用try-catch。当特定的异常可能发生时才使用。比如,当你写文件时,处理异常FileIOException.

·  别写太大的 try-catch 模块。如果需要,为每个执行的任务编写单独的 try-catch 模块。 这将帮你找出哪一段代码产生异常,并给用户发出特定的错误消息

·  如果应用程序需要,可以编写自己的异常类。自定义异常不应从基类SystemException派生,而要继承于. IApplicationException。
从零到一:如何用YOLOv8和PyQt5打造一个高效的路面坑洞检测系统 本文详细介绍了如何利用YOLOv8和PyQt5开发一个高效的路面坑洞检测系统。从环境配置、数据采集标注到模型训练优化,再到PyQt5界面开发与系统集成,提供了完整的实战指南。该系统结合深度学习技术,显著提升了道路检测的准确性和效率,适用于各类道路维护场景。 阅读详情

相关推荐

离线安装WSL2系统

由于办公环境在内网环境中,需将开发环境部署到内网中。环境:内网:win10。

qq_40224400的博客 3511

【C#语言】代码规范

在 C# 的标识符命名中,主要遵循两种命名风格:Pascal 命名法和 Camel 命名法。Pascal 命名法要求每个单词的首字母都大写,例如 “CustomerName”“OrderTotal”。这种命名法常用于类名、方法名、属性名、命名空间等,能够清晰地标识出不同的代码元素,增强代码的可读性和专业性。

远程部署调试 运行安装 项目调试 二次开发 项目技术新 持续迭代 部分源码免费分享 1241

Matterport3D数据集介绍与下载(全网最详细)

Matterport3D数据集介绍与下载(全网最详细)

shannanshouyin的博客 2170

C#代码规范检查工具

C#代码规范检查工具是现代软件开发流程中不可或缺的重要组成部分。这些工具通过静态代码分析技术,能够自动检测源代码中不符合编程规范、潜在错误以及不良实践的问题。在团队协作开发环境中,统一的代码风格和高质量标准对项目的可维护性和可扩展性至关重要。C#作为微软推出的面向对象编程语言,在企业级应用开发领域占据主导地位,因此针对C#语言的代码规范检查工具也形成了丰富的生态体系。这些工具不仅能够帮助开发人员早期发现代码缺陷,还能促进团队形成一致的编码风格,显著提高代码质量和开发效率。

kongxiangjian00的博客 1273

从零开始:如何用大语言模型构建你的第一个路径规划智能体

本文详细介绍了如何利用大语言模型(LLM)构建路径规划智能体,从基础概念到实战案例,涵盖TSP和CVRP问题的解决方案。通过选择合适的LLM模型、设计有效的提示工程和实现自我验证,即使没有运筹学背景也能快速上手。文章还提供了部署与优化智能体的实用技巧,帮助读者在物流配送、机器人导航等领域应用这一技术。

weixin_28256233的博客 488

锐捷交换机配置SSH

锐捷交换机配置ssh 一、组网需求 通过ssh功能可以远程登录管理设备 二、配置步骤 全局开启ssh服务,并且指定ssh版本 Ruijie>enable Ruijie#configure terminal Ruijie(config)#enable service ssh-server ------>开启SSH服务,默认关闭 Ruijie(config)#ip ssh version 2 ------>默认1.99版本,设置为版本2 添加登

Loners_fan的博客 1万+

C#编程代码规范与风格

最后,确保所有跨平台的代码都使用相同的命名规范和编译器选项,这有助于减少平台之间的兼容性问题。此外,使用C#中的`Reflection`库可以帮助我获取C#代码的C实现,并且支持跨平台的编译器选项。他们想要一篇高度原创的文章,长度在1500到3000字之间,每个段落用h2标签,还有4个副标题分别对应主标题中的四个关键词,也就是代码规范、代码风格、C#语言和Web开发。此外,代码风格的统一也是为了确保代码的可读性和维护性,特别是在大型项目中,文档和测试用例的编写往往占据了相当大的篇幅。

a5155114的博客 1647

setup time和hold time的计算

内容仅仅为了方便记忆,与原理无关

sddhyl的博客 7818

C#项目代码规范

目的   1.方便代码的交流和维护。   2.不影响编码的效率,不与大众习惯冲突。   3.使代码更美观、阅读更方便。   4.使代码的逻辑更清晰、更易于理解。 在C#中通常使用的两种编码方式如下   Camel(驼峰式): 大小写形式-除了第一个单词,所有单词第一个字母大写,其他字母小写。  Pascal(帕斯卡): 大小写形式-所有单词第一个字母大写,其他字母小写。 C...

ddry47579的博客 260

YOLO26升级:CVPR2026 WDAM小波方向注意力+C2PSA,频域高频引导低频暗区复原,小目标检测精度跃升!

将 WDAM 引入 YOLO 的 C2PSA 模块,核心优势在于用极低的计算开销,为模型装上了一个“结构感知”的增强器,尤其适合处理密集小目标与边缘部署场景。

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 371

高性能优化的本质

在很早之前,处理器性能的提升一般是通过减小元器件的尺寸,增加元器件的数量,提高主频来实现,这也是摩尔定律所说的,但是由于功耗的影响,主频不能一直增加。后来,由于英伟达的GPU的并行计算的出现,逐渐打破摩尔定律,人们利用多核,SIMD,SIMT来处理大量相同计算的数据,这极大的提高了效率。计算机的算力得到了巨大的提升,但是并行是困难的,对于有数据依赖的程序来说,处理并行是一件及其困难的事,但对于一些简单的数学库的计算,并行的实现相对简单。

发狂的小花的博客 274

C#代码规范(简版)

C#项目代码规范 目的   1.方便代码的交流和维护。   2.不影响编码的效率,不与大众习惯冲突。   3.使代码更美观、阅读更方便。   4.使代码的逻辑更清晰、更易于理解。 在C#中通常使用的两种编码方式如下   Camel(驼峰式): 大小写形式-除了第一个单词,所有单词第一个字母大写,其他字母小写。  Pascal(帕斯卡): 大小写形式-所有单词第一个字...

weixin_30835933的博客 85

第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

🥏第3版•系统集成项目管理工程师(中级) │ 告别迷茫!案例分析高分攻略

✨ 欢迎来到【Seal ^_^ 的优快云博客】!✨ 3870

好代码是管出来的——C#的代码规范

代码是软件开发过程的产物,代码的作用是通过编译器编译后运行,达到预期的效果(功能、稳定性、安全性等等),而另外一个重要作用是给人阅读。对于机器来说只要代码正确就能够正确的...

dotNET跨平台 515

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

C#基础教程(二)代码规范

无规矩不成方圆,C#开发也有自己的"规矩",遵循一定的代码规范,随之带来的好处使程序更加易读,也会变得非常的漂亮,提升自己颜值的一个过程。我们自己开发也要注意遵循,从网上总结了一套,我觉得行之有效。 尽情期待! ...

鱼骨头科技 308

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

C# VS C 解惑 代码规范

int i=3;int j=4;i ^=j ^= i ^= j;这是个经典的写法,两个整数不用临时变量就实现了交换。很Perfect!但是这个在C语言中是Perfect,在C#中呢?using System;class Test{ public static void Main() {  int i = 3;  int j = 4;  i ^= j ^= i ^= j;  

四楼没电梯的专栏 1057

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VS下C#个人代码规范

Visual Studio设置(工具-选项)(文本编辑器-c#-代码样式-命名) Pascal(帕斯卡): 大小写形式-所有单词第一个字母大写,其他字母小写。 Camel(驼峰式): 大小写形式-除了第一个单词,所有单词第一个字母大写,其他字母小写。 类、枚举、属性、方法等直接用Pascal样式 接口(前加I)、抽象类和基类(前加Base)、事件(后加EventHandler)、事件参数(后加EventArgs)、委托(后加Delegate) 类内公共私有字段使用m_+camel,方法内部临时字段使用_+c

lch的博客 719
上一篇: C# 代码注释规范
下一篇: 通过SoapHeader来增强Web Service的安全性
Mevin
博客等级 码龄18年 27粉丝 3原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值