C# 编程规范


一、命名

1.用pascal规则来命名方法类型.

publicclass TextBox

{

     publicvoid DataBind() 

     {

     }

}

2.用camel规则来命名局部变量方法的参数,

string strUserName;
public AddUser(string userId, byte[] passWord);

(并加前缀 数据类型,可选。)
str int bln byt chr lng shr flt dbl lst:list dct:dictionary lnk:linkedlist hst dts:dataset arr:arry arl:arraylist 

3.用camel规则来命名成员变量(字段),并前缀 _

publicclass Database

{

     privatestring _connectionString;

}

3.1APM前缀BeginEnd

4.接口的名称加前缀 I.

interface ICompare

{

     int compare();

}

5.自定义的属性后缀Attribute

publicclass AuthorAttribute : Attribute

{

}

6.自定义的异常后缀Exception

publicclass AppException : Exception

{

}

6.1 EAP后缀 Async Completed Progressed

7.方法名命名采用动宾结构

ShowDialog()

CreateFile()

GetPath()

8.代码的缩进使用用space,不要使用Tab(编辑器设置为使用空格,缩进4空格)

9.局部变量的名称要有意义.不要用x,y,z等等(除用于For循环变量中可使用i,j,k,l,m,n).

string userName

10.所有的成员变量声明在类的顶端,用一个换行把它和方法分开.

11.用有意义的名字命名namespace,如:产品名、公司名.

12.建议局部变量在最接近使用它时再声明.

13.使用某个控件的值时,尽量命名局部变量.

14.用一个换行把引用的namespace,按顺序分为: 系统引用、第三方引用、自定义引用 三个部分

15.文件名跟类名一致,一个文件中一个类或一组关连类.

16.目录结构要与namespace层次一致.

17.大括号"{"要新起一行.

publicclass AuthorAttribute : Attribute

{

}

二、编码习惯.

1.用C#预定义的类名,而不要用别名.

string userName;   而不是 System.String userName;

int number;            而不是 System.Int32;

2.一行不要超过80个字符.

3.尽量不要手工更改机器生成的代码,而是使用工具重新生成。若必须更改,一定要改成和机器生成的代码风格一样,并在文件头部做出重要生命,防止覆盖

4.关键的语句(包括声明关键的变量)必须要写注释.

5.文字常量和数字常量不要硬编码,应该用常量类或枚举代替.

6.不准使用goto系列语句.

7.不要声明public和protected的成员变量,应用property.

8.不要声明public的event,应用事件访问器.

public class Source

{

     private EventHandler m_NumberChangeEvent;

     public event EventHandler NumberChangeEvent

  {

         add

         {

              m_NumberChangeEvent += value;

         }

         remove

         {

              m_NumberChangeEvent -= value;

         }

     }

}

9.类型转换的使用规则.

Animal animal = new Dog();

Dog dog = animal as Dog;

if (dog != null)

{

}

10.生成和构建一个长的或者频繁构建的字符串时,一定要使用StringBuilder,而不用string.

11.始终使用"{ }"包含if下的语句,即使只有一条语句.

12.switch语句一定要有default来处理意外情况.

13.尽量少使用三目运算符 ? : ,而要使用if语句.

14.尽量不用使用this引用,除非是要调用类中的另一个Constructor.

publicclass Person

{

     public Person(string name)

     {

     }   

     public Person() : this("Jim")

     {

     }

}

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

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

相关文章

python做excel表格代码_python操作excel表格

我们在写测试用例的时候,是创建一个表格.xlsx,然后把各种条件加到这张表格中去,所以,如何对excel表格操作,是相当重要的一环,那么,接下来,这篇博客就直接教会大家如何通过python去处…

Windows 查看程序ip地址(面对小白)

前言:Windows自带资源管理器可以查看程序的IP地址。下面以微信通话为例,详细步骤如下(面向小白): 打开任务管理器 打开方法(以下方法都可以): 键盘按住 【ctrl】 【alt】 【delete】 ,选择【任务管理器】Windows 10 以下系统…

解决Qt graphis-view框架中,上层图元接收hover事件导致底层图元接收不到的问题

问题重现 两个图元,一个在上面,名为item_up,一个在下面,名为item_below。 当item_up->setAcceptHoverEvents(true)时,item_up可以接收到鼠标悬停事件(hoverEnter,hoverMove,hove…

【转】C#中相同不同程序集存在相同的命名空间的时候的冲突解决办法

快速解决办法描述描述: 1.将相同命名空间的不同程序集分别进行取别名:【具体操作:右击相同程序的引用,在别名上修改,默认的为global】。 2.调用:在所在调用文件里面最前面写 extern alias 别名,然后using 别名.Names…

chrome webdriver_(最新版)如何正确移除Selenium中的 window.navigator.webdriver

摄影:产品经理产品经理的三文鱼炒饭在《一日一技:如何正确移除Selenium中window.navigator.webdriver的值》一文中,我们介绍了在当时能够正确从Selenium启动的Chrome浏览器中移除window.navigator.webdriver的方法。后来时过境迁,…

【转】2.3async中必须始终返回Task(@Ron.liang)

Asp.Net Core 轻松学-经常使用异步的你,可能需要看看这个文章 目录 前言1. 异常的发生来得太突然2. 问题所在3. 问题的解决方案前言 事情的起因是由于一段简单的数据库连接代码引起,这段代码从语法上看,是没有任何问题;但是就是莫名其妙的报…

Qt事件传递相关问题

事件传递 涉及到深层次窗口结构或者窗口封装时,经常会遇到上层窗口接收不到事件的问题。排除这类问题需要了解窗口间的事件传递过程。 应用程序产生事件时,事件会先派发给父窗口,由父窗口在内部派发给子窗口,子窗口会进一步传递…

tableau 实战练习数据源分享_小白入行数据分析师3年-工作内容复盘分享含代码(二)-数据库及Tableau篇介绍...

前言本文是对使用的数据库以及Tableau的内容进行介绍,方便学习者了解数据库方向有哪些内容是需要有所了解以及可以注意的,分享内容基于个人对这些技能的理解,如有错误请及时指出,我会立马改进。数据库篇数据库这边,我的…

php隐藏webshell_PHP 安全的十个必备技巧

在这篇文章中,我将尝试为你提供一些可以提高 PHP 应用程序安全性的具体步骤。我关注的是 PHP 配置本身,所以我们不会讨论 SQL 注入、HTTPS 或其他与 PHP 无关的问题。我将使用我的 docker-entrypoint.sh 脚本中的 bash 行来说明示例,但当然你…

【转】WebSocket协议:5分钟从入门到精通

一、内容概览 由于WebSocket的出现,使得浏览器也具备了实时双向通信的能力。本文由浅入深,介绍了WebSocket建立连接、交换数据的细节,以及数据帧的格式。此外,还简要介绍了针对WebSocket的安全攻击,以及协议是如何抵御…

Qt填坑

Q_ASSERT里面不要放需要执行的语句,否则release下此语句不会被执行。父类中含Q_OBJECT,子类并不能使用信号槽机制,子类也需要加Q_OBJECT。QStringLiteral只能在Qt 5及以上版本中使用,低版本不支持。如果需要Qt 5及以上版本的代码放…

aop实现原理_Java:由浅入深揭开 AOP 实现原理

点击上方“Java专栏”,选择“置顶或者星标”第一时间阅读精彩文章!1、☞ 程序员进阶必备资源免费送「21种技术方向!」 点击查看☜2、☞ 《Java面试手册》.PDF 点击查看作者:马佩juejin.im/post/5bf4fc84f265da611b57f906概述&a…

Git学习资料

Git使用简易指南官方手册Git北京Git工作流

【转】C#进阶系列——WebApi 接口参数不再困惑:传参详解

阅读目录 一、get请求 1、基础类型参数2、实体作为参数3、数组作为参数4、“怪异”的get请求二、post请求 1、基础类型参数2、实体作为参数3、数组作为参数4、后台发送请求参数的传递三、put请求 1、基础类型参数2、实体作为参数3、数组作为参数四、delete请求五、总结正文 前…

python代码实例sicket_Python socket聊天脚本代码实例

这篇文章主要介绍了Python socket聊天脚本代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 没有前端,多开了一条线程用于接收信息。 服务器端: # -*- coding:utf-8 -*- import so…

【转】01Teams的前世今生

说到Teams,这到底是一个什么产品?有人说它是团队协作工具,有人说它是云视频系统,有人说它是Hub,还有人说它是微软有史以来发展最快的一个产品,还有人说它完全是一个高效办公神器。其实都是对的。 Teams集成…

编辑器推荐:Visual Studio Code(VSCode/VSC)

简介 Visual Studio Code(以下简称vscode),是微软的一款轻量且强大的编辑器,支持Windows,OS X和Linux。内置JavaScript、TypeScript和Node.js支持,而且拥有丰富的插件生态系统,可通过安装插件来…

oracle insert 当前时间_Oracle知识点总结

目录1、Oracle的安装与下载2、基础查询3、条件查询 1)对比运算符 2)逻辑运算符 3)模糊查询 4)排序4、函数 1)数值函数 2)字符函数 3)时间日期函数 4)转换函数 5)通用函数5、聚合函数6、分组查询在学习Oracle之前,需要先有一定的数据库基…

【转】C#各类控件的输入输出(思维导图、知识点分析、案例解析)

第六周学习笔记—C#各类控件的输入输出 1.思维导图 知识点汇总: 着重介绍几个常用控件: 数据显示控件 DataGridView控件 列设置 a)、列的宽度铺满这个控件 设置如下:把AutoSizeColumnsModeFill;//可以在属性窗口中设置 b)、列名居中 代…

Windows下创建软硬链接

定义 硬链接:只要文件本身或者任意一个硬链接存在,则文件始终存在。 软链接:只要源文件存在,则符号链接有效;源文件不存在,符号链接无效。软链接,用符号S表示,可以代表Soft&#x…