c# 编码风格
此内容为copy别人的,仅供自己参看。如有意见,麻烦通知我,谢谢
1. C# 代码风格要求
1.1注释
类型、属性、事件、方法、方法参数,根据需要添加注释。
如果类型、属性、事件、方法、方法参数的名称已经是自解释了,不需要加注释;否则需要添加注释。
当添加注释时,添加方式如下图所示:
1.2 类型(类、结构、委托、接口)、字段、属性、方法、事件的命名
优先考虑英文,如果英文没有合适的单词描述,可以使用拼音,使用中文是不符合要求的。
唯一可以使用中文的地方是枚举的枚举项,枚举项实际已经不属于本节标题的范畴了。这里只是放到一起说明,如下图所示:
1.3 不使用缩写
所有类型、方法、参数、变量的命名不得使用缩写,包括大家熟知的缩写,例如msg。
1.4 代码使用半展开
第一步,打开Visual Studio,进入“工具”,“选项...”,如下图所示:
第二步,进入“文本编辑器”,“C#”,“格式设置”,“新行”,取消掉右侧所有复选框中的对号,如下图所示:
第三步,点击“确定”,完成设置。
1.5 使用Tab作为缩进,并设置缩进大小为4
第一步,打开Visual Studio,进入“工具”,“选项...”,如下图所示:
第二步,进入“文本编辑器”,“C#”,“制表符”,如下图所示,设置制表符。
第三步,点击“确定”,完成设置。
1.6 一个.cs源文件至多定义两个类型
如果两个类型的关系是紧密相关的,比如 产品、产品类型,此时Product类,和ProductType枚举可以定义在同一个Product.cs文件中。
但不能在一个.cs文件中出现两个不相关的类型定义,例如将 Product类和Reseller类(分销商)定义在一个BasicInfo.cs文件中。
1.7 类型名称和源文件名称必须一致
当类型命名为Product时,其源文件命名只能是Product.cs。
1.8 所有命名空间、类型名称使用Pascal风格(单词首字母大写)
如下图所示,红色标记的为使用Pascal风格的类型:
注意ProductType是私有类型,不管类型是公有的还是私有的,其命名总是采用Pascal风格。
1.9 本地变量、方法参数名称使用Camel风格(首字母小写,其后每个单词的首字母大写)
红色标记的为使用Camel风格的变量或者方法参数:
1.10 私有方法、受保护方法,仍使用Pascal风格命名
示例代码如下:
1.11 如果if语句内容只有一行,可以不加花括号,但是必须和if语句位于同一行
范例1.9 中的if判断实际上与下面的语句是等效的:
1.12 调用类型内部其他成员,需加this;调用父类成员,需加base
示例代码如下:
1.13 类型内部的私有和受保护字段,使用Camel风格命名,但加“_”前缀
代码示例如下:
1.14 不能出现公有字段
如果需要公有字段,使用属性进行包装。
1.15 类型成员的排列顺序
类型成员的排列顺序自上而下依次为:
字段:私有字段、受保护字段
属性:私有属性、受保护属性、公有属性
事件:私有事件、受保护事件、公有事件
构造函数:参数数量最多的构造函数,参数数量中等的构造函数,参数数量最少的构造函数
方法:重载方法的排列顺序与构造函数相同,从参数数量最多往下至参数最少。
1.16 委托和事件的命名
委托以EventHandler作为后缀命名,例如 SalesOutEventHandler。
事件以其对应的委托类型,去掉EventHandler后缀,并加上On前缀构成。
例如,对于SalesOutEventHandler委托类型的事件,其事件名称为:OnSalesOut。
示例代码如下:
1.17 返回bool类型的方法、属性的命名
如果方法返回的类型为bool类型,则其前缀为Is、Can或者 Try,例如:
1.18 常见集合类型后缀命名
凡符合下表所列的集合类型,应添加相应的后缀。
说明 | 后缀 | 示例 |
数组 | Array | int[] productArray |
列表 | List | List<Product> productList |
DataTable/HashTable | Table | HashTable productTable |
字典 | Dictionary | Dictionay<string,string> productDictionary |
EF中的DbSet /DataSet | Set | DbSet<Product> productSet |
1.19 常见后缀命名
凡符合下表所列的局部变量、方法参数、字段、属性,均需添加相应的后缀。
说明 | 后缀 | 示例 | 示例说明 |
费用相关 | Cost | ShipCost | 运输费 |
价格相关 | Price | ProductUnitPrice | 产品单价 |
消息相关 | Message(弃用Note) | SuccessMessage | 成功消息 |
日期相关 | Date(弃用Time) | OrderDate | 下单日期 |
计数、数量相关 | Count(弃用Time) | LoginCount | 登录次数 |
链接地址相关 | Url | BlogUrl | 博客链接 |
图片相关 | Image | SignImage | 签名图片 |
金额相关 | Amount | PrepaidAmount | 预付款 |
点数、积分相关 | Point | MemberPoint | 会员积分 |
记录、日志相关 | Record(弃用Log) | ErrorRecord | 错误记录 |
配置相关 | Config | DataBaseConfig | 数据库配置 |
状态相关 | Status | OrderStatus | 订单状态 |
模式、方式相关 | Mode | OpenMode | 打开方式 |
种类相关 | Category / Type 二选一 | UserCategory | 用户种类 |
工厂类相关 | Factory | ConnectionFactory | 连接工厂 |
启用相关 | Enabled | ExportEnabled | 开启导出 |
流相关 | Stream | UploadStream | 上传流 |
读取器相关 | Reader | ExcelReader | Excel读取器 |
写入器相关 | Writer | ExcelWriter | Excel写入器 |
适配器相关 | Adapter | IntroOPAdapter | IntroOP适配器 |
提供器相关 | Provider | MemebershipProvider | 会员信息提供器 |
包装器相关 | Wrapper | ProductWrapper | Product包装器 |
连接相关 | Connection | ExcelConnection | Excel连接 |
1.20 常见类型命名
凡存在下表中的类型,需采用下表指定的名称命名。
类型 | 命名 | 类型 | 命名 |
客户 | Customer | 分销商 | Reseller |
零售商 | Retailer | 经销商/批发商 | Dealer |
用户 | UserInfo(User为数据库关键字) | 订单 | OrderInfo(Order为数据库关键字) |
供应商 | Supplier | 管理员 | Admin |
密码 | Password | 会员 | Member |
评论 | Remark(弃用Comment) | 文章 | Article |
新闻 | News | 发票 | Invoice |
导入 | Import | 导出 | Export |
公司、企业 | Company(弃用Enterprise) | 产品 | Product |
省份 | Province | 城市 | City |
区县 | District | 地址 | Address |
角色 | Role(弃用Group) | 权限 | Authority(弃用Permission) |
仓库 | Warehouse | 工厂 | Plant |
登录 | Login(弃用SignIn) | 登出 | LogOut(弃用SignOut) |
创建 | Create(弃用Add) | 编辑 | Edit |
更新 | Update | 删除 | Remove(弃用Delete) |
照片 | Photo | 图片 | Image |
1.21 常见字段、属性命名
字段、属性种类比较繁杂,因此仅列出最常用的几项。
类型 | 名称 | 类型 | 名称 |
Id(int型) | Id(“d”小写,弃用ID) | GuidId(Guid型) | Id |
Name | 名称 | Title | 标题 |
Remark | 备注、描述(弃用Memo、Description) | Category | 种类(弃用Class、Type) |
Linkman | 联系人 |
2. XHTML 代码风格要求
2.1 如果XHTML标记有层次,那么代码也要有层次
下面是书写符合要求的例子:
下面是书写 不符合要求 的例子:
2.2 所有标记必须闭合
示例代码如下:
2.3 如果标记中间代码超过20行,则应在标记末尾加注标识
标注方式如下:
3. CSS 代码风格要求
3.1 代码使用半展开
设置方法参考1.4节。
3.2 使用Tab作为缩进,并设置缩进大小为4
设置方法参考1.5节。
3.3 代码注释
注释主要说明该样式应用于页面的哪个部分,而非说明样式的应用效果,代码注释风格如下所示:
3.4 代码编写
每一个样式设置必须独占一行,不能位于同一行,下面是符合要求的写法:
下面是 不符合要求 的写法:
3.5 嵌入式样式的比例不超过样式表代码总量的10%
嵌入式样式为直接写在HTML标记内部的样式,如下图所示:
3.6 内联式样式的比例不超过样式表代码总量的30%
内联式样式为写在<head></head>中的样式,如下图所示:
内联式样式,不能 写在<body></body>之间。
3.7 外联式样式表的比例不少于样式表代码总量的60%
外联式样式表为写在.css文件中的样式,通过link引入到XHTML页面中,如下图所示:
4. JavaScript 代码风格要求
4.1 代码使用半展开
设置方法参考1.4节。
4.2 使用Tab作为缩进,并设置缩进大小为4
设置方法参考1.5节。
4.3 代码注释
代码注释需要说明“函数功能”、“入口参数”、“返回值”,注释范例如下:
其中第一行说明函数功能;第二行说明入口参数;最后一行说明返回值
4.4 不得出现内嵌式代码
内嵌式代码是指写在XHTML标记中的JavaScript代码,下面的写法是 不符合要求 的:
4.5 内联式代码占JavaScript的总量不得超过40%
内联式代码是指写在<head />或者<body />之间的代码:
4.6 外联式代码占JavaScript的总量至少为60%
外联式代码指写在单独的.js文件中,然后通过script标记连接到XHTML页面中的代码。
c# 编码风格的更多相关文章
- 学习Linux的编码风格
对于编码,每个码农或许都会有自己的一套风格,很多人可能对编码风格压根就不关心,因为最终编译器编译出来的目标代码并不会受影响.但是在开发一个大型项目时,花费时间成本最多的永远是开发者们之间的沟通与交流. ...
- R 语言编码风格指南
R 语言是一门主要用于统计计算和绘图的高级编程语言.这份 R 语言编码风格指南旨在让我们的 R代码更容易阅读.分享和检查.以下规则系与 Google 的 R 用户群体协同设计而成. 概要: R编码风格 ...
- Nim编码风格
介绍 Nim语言不限制开发人员使用哪种具体的编码风格, 但为了社区的发展,在编写一些标准库的时候还是应该遵从统一的编码风格 这篇文章会列出一系列的编码风格准则,供大家参考. 但值得注意的是,有很多例外 ...
- 一步一步学Python(1) 基本逻辑控制举例和编码风格规范
(1) 基本逻辑控制举例和编码风格规范 1.while死循环 2.for循环 3.if,elif,else分支判断 4.编码风格(官方建议) 版本:Python3.4 1.while死循环 #func ...
- 来自 Google 的 R 语言编码风格指南
来自 Google 的 R 语言编码风格指南R 语言是一门主要用于统计计算和绘图的高级编程语言. 这份 R 语言编码风格指南旨在让我们的 R 代码更容易阅读.分享和检查. 以下规则系与 Google ...
- JavaScript编码风格指南(中文版)
前言: 程序语言的编码风格对于一个长期维护的软件非常重要,特别是在团队协作中.如果一个团队使用统一规范的编码分风格,可以提高团队的协作水平和工作效率.编程风格指南的核心是基本的格式化规则,这些规则决定 ...
- jmeter随笔(9)--有两种编码风格,导致数据乱码
问题:在一个网站,有两种编码风格,导致数据乱码 解决办法: 1.首先设置jmeter的配置文件 2.针对要求是utf-8格式的这样的请求,做单独的编码处理(beanshell处理) 3.运行,在htm ...
- Android编码风格
整理一下51CTO学院中张凌华老师讲的编码风格课程 一. 项目开发目录命名: Requirement - 需求相关文档 Design - 设计 Planning&Log - 计划,日志,会议 ...
- 一些达成共识的JavaScript编码风格约定
如果你的代码易于阅读,那么代码中bug也将会很少,因为一些bug可以很容被调试,并且,其他开发者参与你项目时的门槛也会比较低.因此,如果项目中有多人参与,采取一个有共识的编码风格约定非常有必要.与其他 ...
- 辛星浅谈PHP的混乱的编码风格
我们都知道.各种编程语言都有自己的风格,即使是像C和C++那样一脉相承的语言(C++本意全然兼容C的语法).编程风格上还是有些区别.比方非常典型的就是C++风格的单行凝视和C风格的多行凝视. 而尽管J ...
随机推荐
- JAVAWEB复习day01
一.基础知识 1.一个html文件开始和结束的标签<html></html> 2.html的两部分<head>设置相关信息</head>,<bod ...
- day9_7.9 函数的定义
一.基础 1.什么是函数? 函数就是工具,方便开发人员开发软件,非常简洁的工具. 函数的关键字是def 在函数的编写阶段,只检验其语法是否正确,不检验代码. 在函数的调用阶段,可以通过函数名+()来调 ...
- 2019.6.11_MySQL进阶三:临时表
临时表 临时表主要应用于保存一些临时数据.临时表只在当前连接可见.当关闭连接时,MySQL会自动删除表并且释放空间.临时表在MySQL 3.23版本中添加,低于 3.23版本就无法使用MySQL的临时 ...
- opencv旋转图像,90度标准旋转
摘自opencv 源代码 void rotate(InputArray _src, OutputArray _dst, int rotateMode) { CV_Assert(_src.dims() ...
- 莫烦TensorFlow_10 过拟合
import tensorflow as tf from sklearn.datasets import load_digits from sklearn.cross_validation impor ...
- 迪杰斯特拉算法完整代码(Java)
package com.rao.graph; import java.util.*; /** * @author Srao * @className Dijkstra * @date 2019/12/ ...
- Linux学习笔记-第7天 - 编程还是要多写多练
编程思路很重要,多写是要熟悉命令用法,多练不只是要熟悉语句常用在什么环境,更要在其基础上,尝试更多的写法.
- 8.22 NOIP模拟测试29(B) 爬山+学数数+七十和十七
T1 爬山 二分最高高度,$O(1)$判断是否可行. #include<iostream> #include<cstdio> #define ll long long usin ...
- 8.5 NOIP模拟测试13 矩阵游戏+跳房子+优美序列
T1矩阵游戏 数学题.首先这一列这一行先乘还是后乘对最后答案没有影响.a[i][j]表示矩阵中原始的值,h[i]表示i行的累乘,l[i]表示i列的累乘.易得ans=Σa[i][j]*h[i]*l[i] ...
- 喜欢去知乎炸鱼?用python吧
知乎高赞贴: 有一双大长腿是什么体验? 有一副迷人的身材是什么体验? 别用手机费劲的翻了,python帮你一臂之力 import re import requests import os import ...