dotnet core 编程规范
本文实际只是翻译 .NET Core foundational libraries 官方文档的编码风格
在 .NET Core foundational libraries项目使用的编程规范默认就是 VisualStudio 默认样式。
花括号
花括号使用 Allman style 风格,所有的花括号在新的一行开始。
关于 Allman style 就是如下,花括号放在下一行,而且花括号不进行缩进,花括号里面的代码缩进。
while (x == y)
{
something();
somethingelse();
}
但是对于单行的语句,可以不添加花括号,但是请把它放在同一行
if (xx == null) xx = new Foo();
单行语句同样建议添加花括号避免苹果的bug
如果不添加花括号,一定不要在嵌套时使用。
空格
使用 4 个空格作为一个缩进,而不是使用 tab
字段
所有的字段使用_camelCase风格,而且尽可能使用readonly 。在 internal 和 private 访问的字段添加 _ 前缀,对于静态的字段添加s_前缀,对于线程静态的字段添加t_前缀。如果使用了静态的字段而且可以设置readonly ,需要把readonly 放在static后面。
最好不要公开字段,如果需要公开那么使用PascalCasing风格而且不添加前缀。
我不是很赞同对字段的风格,但是因为本文是翻译,我就没有添加自己的理解。
限定
不要添加 this. ,完全是没必要的。
我也不是很赞同这个,因为如果使用扩展方法,需要使用this.
访问
显示指定访问,即使访问是默认的,如private string _foo ,而不是string _foo。访问需要放在最前面,如public abstract,不建议abstract public
默认的访问是可能修改的
命名空间
对于引用需要放在文件的开头。
空行
禁止超过一行的空白,不可以使用两行空白。
不要使用两行分割两个类型。
多余空格
禁止在一行结束添加多余空格。通过 VisualStudio 的查看空格(ctrl+E,S)可以看到空格
参照现有
如果一个文件在格式规范定义之前已经有自己的规范,尽可能参照文件现有的规范而不是去修改他。
新的修改参照现有的文件的格式。
我一点都不赞同。
明显的类型
只能在明显可以知道对象类型可以使用 var ,如var stream = new FileStream(...) 。在无法明显知道对象类型不可以使用 var ,如var stream = OpenStandardInput() 。
关键字
使用语言的关键字代替 BCL 类型,如使用 int, string, float代替Int32,String,Single
常量命名
对于所有的常量,包括静态只读,使用 PascalCasing 风格。如果需要使用 C++ 或其他代码对于命名有要求才可以使用其他的方法。
变量名字符串
如果使用变量名的常量,必须使用 nameof 关键字。
字段结构
字段必须放在一个类声明的最前面。
我一点都不赞成,因为谁会去管一个类的字段,我关心的是构造函数和公开属性、函数。
其他字符
如果在代码使用了 非 ascii 的字符,那么需要把他转换为 \uxx 方式,这样可以解决一些非 ascii 因为编译器分析的问题。
当然上面的要求只是对于编译的代码
Label
使用 Label 缩进一个小于当前缩进的标签


本作品采用知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议进行许可。欢迎转载、使用、重新发布,但务必保留文章署名林德熙(包含链接:http://blog.csdn.net/lindexi_gd ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请与我联系。
dotnet core 编程规范的更多相关文章
- DotNet Core 1.0 集成 CentOS 开发与运行环境部署
一. DotNet Core 1.0 开发环境部署 操作系统安装 我们使用CentOS 7.2.1511版本. 安装libunwind库 执行:sudo yum install libunwi ...
- flex+AS3编程规范
flex+AS3编程规范 Flex+AS3编码规范 http://www.cnblogs.com/jiahuafu/ 1. 缩写: 尽量避免使用缩写,使用缩写时尽量和Flex保持一致.但要记住一 ...
- 使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例)
作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何基于dotnet core(微软.NET的最新版本,支持跨平台,跨设备的应用开发,详情请参考 https ...
- centos 配置.Net core 环境并部署dotnet Core文件
一.配置环境[Microsoft dotnet Core] 1) Add the dotnet product feed sudo rpm -Uvh https://packages.microsof ...
- .Net Core 编码规范
.Net Core 编码规范 标签: 未分类 概述 规范制定原则 方便代码的交流和维护. 不影响编码的效率,不与大众习惯冲突. 使代码更美观.阅读更方便. 使代码的逻辑更清晰.更易于理解. 术语定义 ...
- .Net基础——程序集与CIL HttpClient封装方法 .Net Core 编码规范 C#中invoke和beginInvoke的使用 WebServeice 动态代理类
.Net基础——程序集与CIL 1. 程序集和CIL: 程序集是由.NET语言的编译器接受源代码文件产生的输出文件,通常分为 exe和dll两类,其中exe包含Main入口方法可以双击执行,dll ...
- 2017-03-05 CentOS中配置守护服务(Supervisor)监听dotnet core web程序的运行
我们继续解决上篇博客的问题,我这个人有个毛病,不喜欢遗留什么问题,也不喜欢问题说不明白,具体要怎么解决一定要详尽,因为经常自己遇到问题的时候,去翻别人的博客,就会遇到这样的问题,很苦恼,又说废话了. ...
- devOps开发(Web API 实例)dotnet core 和 Azure PaaS服务
使用 dotnet core 和 Azure PaaS服务进行devOps开发(Web API 实例) 作者:陈希章 发表于 2017年12月19日 引子 这一篇文章将用一个完整的实例,给大家介绍如何 ...
- SonarQube系列二、分析dotnet core/C#代码
[前言] 本系列主要讲述sonarqube的安装部署以及如何集成jenkins自动化分析.netcore项目.目录如下: SonarQube系列一.Linux安装与部署 SonarQube系列二.分析 ...
随机推荐
- sql server中replace()函数用法解析
知识点一:replace()的语法 REPLACE ( string_replace1 , string_replace2 , string_replace3 ) 参数解析: string_repla ...
- 注册Docker官网账号 注册按钮不能点
出现如下问题:注册按钮不能点,解决办法,如下 关于docker hub上不能注册dockeID的问题 注意的是,google访问助手,用在线安装,360安全浏览器,再重启下该浏览器,省得装插件.
- RabbitMQ基本理论
本节内容 一 RabbitMQ介绍 二 RabbitMQ安装配置 三 RabbitMQ的Python实现-pika 1. 生产者消费者 2. 工作队列 3. 持久化和公平分发 4. 发布与订阅 ...
- samba服务配置(二)
需求: 某公司销售部门提出一个文件共享需求,要求部门共享目录有三个,第一个共享目录所有销售部门人员都具有可读可写权限: 第二个共享目录所有销售人员只读权限,经理级别的销售人员具有可读可写权限:第三个共 ...
- HTCVive使用
1.设备的安装与配置 https://wenku.baidu.com/view/fa172fd7482fb4daa48d4b44.html?from=search 2.接入SDK.实现简单示例场景.更 ...
- 剑指offer编程题Java实现——面试题10二进制中1的个数
题目: 请实现一个函数,输入一个整数,输出该整数二进制表示中1的个数.例如,把9表示成二进制是1001,有2位是1,该函数输出2解法:把整数减一和原来的数做与运算,会把该整数二进制表示中的最低位的1变 ...
- TensorFlow 神经网络教程
TensorFlow 是一个用于机器学习应用程序的开源库.它是谷歌大脑的第二代系统,在取代了近源的 DistBelief 之后,被谷歌用于研究和生产应用.TensorFlow 提供了很多种语言接口,包 ...
- House of Spirit学习调试验证与实践
作家:Bug制造机 原文来自:House of Spirit学习调试验证与实践 House of Spirit和其他的堆的利用手段有所不同.它是将存在的指针改写指向我们伪造的块(这个块可以位于堆.栈. ...
- spring框架学习笔记2:配置详解
简单写一个类做示例: package bean; public class User { private String name; private Integer age; public String ...
- Rocketmq日志收集与logback集成Demo
官方文档有简洁的例子,这里就做一个简单补充和实践 直接上logback-boot.xml文件 <?xml version="1.0" encoding="UTF-8 ...