ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

“我的“ C# 代码规范

2021-09-23 14:32:07  阅读:163  来源: 互联网

标签:do 函数 C# 代码 some 规范 thing 使用


        代码规范是最容易被忽视的一项技能。对于领导和开发者来说,实现业务需求并且没有Bug才是最终目的。假如没有健全的Code review机制,项目很容易沦为“Shit mountain”。

        相信我们大多数人接触编程的第一门语言是C语言。C语言是一门优秀的面向过程语言,我们可以通过使用基础的数据结构与程序流程来学习编程。因此有些同学会养成命令式编程习惯,例如我们通常会看到这样的程序:

If(…)
  //do some thing
If(…)
  //do some thing
Else
  //do some thing
//do some thing
//do some thing

随着时间的推移,这段代码经手的人越来越多,这个方法也越来越长。

写出整洁的代码是一件很简单,但又没有明确标准的一件事,假如你正好接手了一个代码很规范的项目的话,会学习的很快。我只能通过一些原则性的,理论性的要求,以及工作中的所见所感,给出一些建议。

函数式编程原则性要求:

  1. 避免参数突变,即无论当前方法的入参是值类型或是引用类型,都应该将其视为不可变类型,应将目标结果作为方法的返回值。常见错误有void FillOrderInfo(Order order)等。应该使用order.BuildInfo(…);或 Order GetOrderDetail(…);等方式。
  2. 编写合适的高阶函数。即接受委托(方法)作为入参,或者以委托(方法)作为返回值的函数。如Linq中的Where,Select等。
  3. 编写可测试的代码,即纯函数。纯函数指的是结果只由入参决定的函数,假如你函数中使用了DataTime.Now, 因为它会获取外部操作系统时间,因此会导致当前函数依赖外部环境,不是纯函数。应在外部获取当前时间,作为参数传入,类似行为还有数据库查询,网络调用等。

函数式编程提倡一行函数,C#本身新语法也在往函数式编程方向发展,比如C#9.0中的Init,顶级语句,记录类型以及之前的模式匹配等,无不展示这些程序设计理念。

业务代码:

  • 任何一个方法不要超过50行,十行以内最好,养成分层拆分抽象的习惯,特殊算法等除外。
  • 用不着的代码统统删掉,即使希望备份,也不要注释之后留在项目里。
  • 要正确使用public 和private。
  • 一个.cs文件中应只定义一个接口,或者类型。具有关联关系的两种类型应以子文件夹和命名的方式进行逻辑关联。
如:Event/OrderUpdateEvent.cs;  Handler/ OrderUpdateHandler.cs。
  • 方法签名即方法设计要尽可能缩小参数范围。
错误示范:
DbContext AddDbContext<T>(Configure conf)

{ 
    connString  = conf[“ConnString”]; 
    // do some thing;
}

正确写法:
DbContext AddDbContext<T>(string connString)
{ 
    // do some thing;
}
  • 网络接口定义与调用应遵守基本的RESTful规范(不要把Post请求体拆成键值对附加在Url中的!)。
  • 异步方法应返回Task,Task<T>, 且最好以Async结尾来命名,如 Task<T> QueryOrderAsync(string id)。
  • 尽可能的减少分支复杂度,即将多个if-else改为switch,或使用策略模式等。
  • 推荐使用if的中断模式,即if(…) return; 而不是if(…) { //do some thing; }
  • 编写简洁的属性,对于TotalPrice,IsValid等需要计算或逻辑判断得出的值,可以灵活使用只读属性{get=>…;}
  • 注意I/O请求是否写在了循环当中。
  • 可以使用扩展方法,尽量避免使用静态类,字段等。
  • 任何变量,函数,类型等命名都要认真且简洁。非共识情况,不许使用简写,缩写,无意义字母,汉字(单元测试除外)等。

要对当前的开发技术有一个较全面的了解,并灵活使用:

  1. 使用IOC容器,依赖注入。
  2. 使用EventBus来优化代码。
  3. 使用AutoMapper来做实体映射。
  4. 能使用ORM就不要使用SQL。
  5. 使用Polly来做故障处理。
  6. 当配置项过多时考虑引入或设计一个配置管理平台。
  7. 学习领域驱动设计。
  8. ......

标签:do,函数,C#,代码,some,规范,thing,使用
来源: https://blog.csdn.net/qq_40404477/article/details/118939953

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有