[Asp.Net Core]提高开发效率的方法

 更新时间:2020-08-17 06:17:15   作者:佚名   我要评论(0)

一、概述


在园子里面有很多关于各种技术细节的研究文章,都是比较牛逼的框架研究;但是一直没有看到关于怎么样提高开发效率的文章,大多提高开发效率的文章都是关

一、概述

在园子里面有很多关于各种技术细节的研究文章,都是比较牛逼的框架研究;但是一直没有看到关于怎么样提高开发效率的文章,大多提高开发效率的文章都是关于自动化等方面的辅助工具类型的,而不是开发中的一些小技巧;今天从编码规范、编码技巧、开发思想、设计模式等各方面的经验来分享如何提高开发效率。

二、实际场景

在这个前后端分离盛行的开发年代,分工比较明确,开发者分前端开发者和后端开发者,然而感到欣慰的是.net 开发者大多是担任着全栈开发的职责,有经验的开发者都是从前端走过来的,说白了前端业务代码对后端开发者来说那都不是事。

前后端分离前:几年前前后端还未分离的时候,各种前端框架还未流行的时候,开发者的效率算是比较低下,后端干前端的活,甚至前端和后端夹杂工作,导致了工作开发容易乱,需要相互依赖,不能完全并行工作,这导致了开发效率底的一个极大的原因,同时开发出来的东西体验也是很差。

前后端分离:职责分明,后端专注后端的开发,前端专注前端的开发;相互依赖关系很弱,后端可以先定义开发接口,前端页面及mock 接口对接,最后联调测试时间前后端打通过;前后端完全可以并行开发,开发周期缩短一倍时间;不过这也就会导致了一个致命的问题,大多开发者只管自己的那一部分,不会以全局考虑,导致的一个问题就是联调测试时间代价太大,遇到问题相互甩锅。

前后端都存在的问题,会再联调测试时间全部暴漏出来,这也是为什么联调测试时间会花费那么长时间,甚至晚上加班加点再处理问题的原因,总结如下:

  • 开发过程中不够谨慎,全是空异常问题
  • 代码不规范,代码逻辑嵌套层次太深,牵一发而动全身,以至于修改这里,爆露出那边的问题出来,不会适当的解耦
  • 后端接口返回的字段含义不明确,不清晰,甚至完全跟字段含义违背,比如数据库中有一个int 类型的Type字段,而前端需要类型的中文名称,后端开发者偷懒直接用Type 字段返回字段中文名称,后面前端需要int 类型的Type 有不知道加什么字段为好,导致修修改改,影响效率,下面我会具体分享细节。
  • 眼观不足,不会考虑后续的需求变更扩展
  • 没有设计模式思想,导致维护成本变大

下面从几个方面点来具体分析

三、空异常

1.1 不可信原则

作为开发者,你都可以把自己作为方法调用者的第三方,不需要去关注方法的实现,只需要关注调用方法我应该得到什么结果;然而作为调用者第三方,你都需要认为实现者的方法都是不可信状态,只需要秉承该原则,基本上你就跟空异常没有缘分了.

1.2 ?. (null条件运算符)

先来看一下以下代码:

 [HttpGet]
 public async Task<DataResponse<bool>> GetTest()
 {
  var list = GetList();//获取List 列表
  if (list?.Count <= 0)
  {
   return DataResponse<bool>.AsError("没有获取到数据");
  }
  //TODO 更新操作
  return DataResponse<bool>.AsSuccess(true);
 }

上面代码很多人可能会这么写,实际上是存在问题的list?.Count <=0 实际上在list 为空的时候就成了null<=0 判断了,则也是false,不符合预期结果,正确的代码如下:

 [HttpGet]
 public async Task<DataResponse<bool>> GetTest()
 {
  var list = GetList();//获取List 列表
  if ((list?.Count??0) <= 0)
  {
   return DataResponse<bool>.AsError("没有获取到数据");
  }
  //TODO 更新操作
  return DataResponse<bool>.AsSuccess(true);
 }

这里就引用了?? 运算符(空合并运算符)

1.3 ?? (空合并运算符)

MSDN上面的解释:?? 运算符称为 null 合并运算符,用于定义可以为 null 值的类型和引用类型的默认值。如果左操作数不为 null,则此返回左操作数;否则当左操作数为 null,返回右操作数。

1.4 如何远离空异常?

秉承原则:不可信原则,什么是不可信原则呢?你调用方法都任务改方法是不可信的,包括自己写的方法;这在敏捷快速开发中更明显,特别是调用团队中别人开发的微服务api ,你不需要关注方法的实现,只需要关注方法的结果即可,但是也不能太过于相信它;所有的返回结果你都需要判断是否是null 的结果数据,多结合?. 和?? 运算符进行合理的逻辑处理,可以让你的项目从此远离空异常。

四.If else 解套

先来看一看比较有趣的网络上的图片

取反原则

对于上面的if else 嵌套业务大家是不是经常遇到,看到这种代码会非常的头疼,难于维护,影响开发效率,同时也容易出现bug。有经验的开发者必定会对上面这段代码进行优化,我的经验是取反原则。

什么是取反原则呢?把不符合的条件先 return 下去,到最后留下符合条件的逻辑,这就是取反原则,一眼看下来就只有一层嵌套,不会存在多层嵌套。

我们来看下我遇到的实际场景代码,源代码大体如下:

if (condition)
{
 if (condition1)
 {
  if(condition2)
  {
   if (condition3)
   {
    if (condition4)
    {
     // do something
    }
    else
    {
     // do something
    }
   }
   else
   {
    // do something
   }
  }
  else
  {
   // do something
  }
 }
 else
 {
  // do something
 }
}
else
{
 // do something
}

取反原则优化后的代码如下:

 if (!condition)
 {
  // do someting
  return;
 }
 if (!condition1)
 {
  // do someting
  return;
 }
 if (!condition2)
 {
  // do someting
  return;
 }
 if(!condition3)
 {
  // do someting
  return;
 }
 if(!condition4)
 {
  // do someting
  return;
 }
 // do someting

五、必要的设计模式

开发过程中不要一个链路写到底,需要把某块业务先想好,定位明确,该业务是应该属于哪一块,哪一类业务,后续可能会出现哪些方面的业务变动,适当的引入设计模式,那么多的设计模式,总有一个适合你当时开发的场景;

设计模式的选取需要对该模块的作用及定义清晰,多思考,多归类,自然而然心中就有了合适的设计模式的考量。

六、必要的单元测试

做到每个方法单元测试,最好是全路径覆盖到每一条分支的单元测试,先从小的方法单元测试,底层的方法单元测试通过后,再通过postman或者其他工具来进行对外API接口层面的测试,做到全路径覆盖的测试,往往开发人员有一个思维就是测试正常的业务流程,异常流程往往一概不考虑测试;然而出问题的都是那些异常的流程,单元测试需要遵守的原则如下:

  • 尽可能的全路径覆盖测试
  • 抛弃自己写的代码思维,当一个小白进行单元测试
  • 关注异常路径的单元测试
  • 摒弃依赖思想,不要依赖联调测试时间来进行测试,往往你开发只管开发,不管正确率,到后续测试联调时间那就的疯狂加班加点去赶进度了,还不能保证最佳的产品质量。

以上就是[Asp.Net Core]提高开发效率的方法的详细内容,更多关于Asp.Net Core提高开发效率的资料请关注脚本之家其它相关文章!

您可能感兴趣的文章:

  • .Net Core3 用Windows 桌面应用开发Asp.Net Core网站
  • ASP.NET Core应用错误处理之DeveloperExceptionPageMiddleware中间件呈现“开发者异常页面”
  • Asp.Net Core利用文件监视进行快速测试开发详解
  • ASP.NET Core开发教程之Logging利用NLog写日志文件
  • ASP.NET Core优雅的在开发环境保存机密(User Secrets)
  • Visual Studio 2017 ASP.NET Core开发
  • VS2015 搭建Asp.net core开发环境的方法

相关文章

  • [Asp.Net Core]提高开发效率的方法

    [Asp.Net Core]提高开发效率的方法

    一、概述 在园子里面有很多关于各种技术细节的研究文章,都是比较牛逼的框架研究;但是一直没有看到关于怎么样提高开发效率的文章,大多提高开发效率的文章都是关
    2020-08-17
  • .Net Core + Nginx实现项目负载均衡的全步骤

    .Net Core + Nginx实现项目负载均衡的全步骤

    nginx大家如果没用过那或多或少都应该听过,vue的部署、反向代理、负载均衡nginx都能帮你做到。 今天主要说一下nginx负载均衡我们的项目,如下图所示,请求到达nginx
    2020-08-17
  • 详解ASP.NET Razor 语法

    详解ASP.NET Razor 语法

    Razor 同时支持 C# (C sharp) 和 VB (Visual Basic)。 主要的 Razor C# 语法规则 Razor 代码块包含在 @{ ... } 中 内联表达式(变量和函数)以 @ 开头 代码语
    2020-08-17
  • 详细分析ASP.NET Razor之C# 变量

    详细分析ASP.NET Razor之C# 变量

    变量 变量是用来存储数据的。 一个变量的名称必须以字母字符开头,并且不能包含空格或者保留字符。 一个变量可以是一个指定的类型,表示它所存储的数据类型。string
    2020-08-17
  • 浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    浅谈AjaxPro.dll,asp.net 前台js调用后台方法

    1、什么是Ajax Ajax是异步Javascript和XML(Asynchronous JavaScript and XML)的英文缩写。"Ajax"这个名词的发明人是Jesse James Garrett,而大力推广并且使Ajax技术炙
    2020-08-17
  • ASP.NET Core Authentication认证实现方法

    ASP.NET Core Authentication认证实现方法

    追本溯源,从使用开始     首先看一下我们通常是如何使用微软自带的认证,一般在Startup里面配置我们所需的依赖认证服务,这里通过JWT的认证方式讲解 public
    2020-08-17
  • .Net Core如何对MongoDB执行多条件查询

    .Net Core如何对MongoDB执行多条件查询

    以前项目基本上全部使用MySQL数据库, 最近项目排期空出了一点时间leader决定把日志模块迁移到插入/查询性能更好的MongoDB上. 多条件查询的写法着实费了些功夫, 撰文
    2020-08-17
  • ASP.NET Core中的响应压缩的实现

    ASP.NET Core中的响应压缩的实现

    介绍# 响应压缩技术是目前Web开发领域中比较常用的技术,在带宽资源受限的情况下,使用压缩技术是提升带宽负载的首选方案。我们熟悉的Web服务器,比如IIS、Tomca
    2020-08-17
  • 浅谈.Net中的序列化和反序列化

    浅谈.Net中的序列化和反序列化

    序列化和反序列化相信大家都经常听到,也都会用, 然而有些人可能不知道:.net为什么要有这个东西以及.net Frameword如何为我们实现这样的机制, 在这里我也是简单谈
    2020-08-17
  • 通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序的方法

    通过Windows Visual Studio远程调试WSL2中的.NET Core Linux应用程序的方法

    最近两天在Linux中调试.NET Core应用程序,同时我发现在Linux中调试.NET Core应用程序并不容易。一直习惯在Visual Studio中进行编码和调试。现在我想的是可以简单快
    2020-08-17

最新评论