热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

遵守这些原则让你开发效率提高一倍(收藏)

这篇文章主要介绍了遵守这些原则让你开发效率提高一倍,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

一、概述

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

二、实际场景

在这个前后端分离盛行的开发年代,分工比较明确,开发者分前端开发者和后端开发者,然而感到欣慰的是.net 开发者大多是担任着全栈开发的职责,有经验的开发者都是从前端走过来的,说白了前端业务代码对后端开发者来说那都不是事。
前后端分离前:几年前前后端还未分离的时候,各种前端框架还未流行的时候,开发者的效率算是比较低下,后端干前端的活,甚至前端和后端夹杂工作,导致了工作开发容易乱,需要相互依赖,不能完全并行工作,这导致了开发效率底的一个极大的原因,同时开发出来的东西体验也是很差。
前后端分离:职责分明,后端专注后端的开发,前端专注前端的开发;相互依赖关系很弱,后端可以先定义开发接口,前端页面及mock 接口对接,最后联调测试时间前后端打通过;前后端完全可以并行开发,开发周期缩短一倍时间;不过这也就会导致了一个致命的问题,大多开发者只管自己的那一部分,不会以全局考虑,导致的一个问题就是联调测试时间代价太大,遇到问题相互甩锅。

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

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

三、空异常

1.1 不可信原则

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

1.2 ?. (null条件运算符)

先来看一下以下代码:

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

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

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

这里就引用了&#63;&#63; 运算符(空合并运算符)

1.3 &#63;&#63; (空合并运算符)

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

1.4 如何远离空异常?

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

二、If else 解套

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

2.1 取反原则

对于上面的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接口层面的测试,做到全路径覆盖的测试,往往开发人员有一个思维就是测试正常的业务流程,异常流程往往一概不考虑测试;然而出问题的都是那些异常的流程,单元测试需要遵守的原则如下:

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

到此这篇关于遵守这些原则让你开发效率提高一倍的文章就介绍到这了,更多相关提高开发效率内容请搜索以前的文章或继续浏览下面的相关文章希望大家以后多多支持!


推荐阅读
  • 在Postman中使用@RequestParam接收数组的方法详解
    本文详细探讨了在Postman中如何正确使用@RequestParam注解来传递和接收数组数据,以及在实际应用中可能遇到的问题及解决方案。 ... [详细]
  • 本文介绍了软件测试项目的实际操作过程,包括各角色的职责分配、项目启动、测试流程及测试人员的主要任务,旨在为从事软件测试工作的技术人员提供指导。 ... [详细]
  • 本文旨在介绍一系列提升工作效率的浏览器插件和实用小工具,帮助用户在日常工作中更加便捷高效。内容由原作者授权发布。 ... [详细]
  • 本文探讨了如何在Sitecore 9环境中通过Postman使用API密钥发送请求,包括解决常见错误的方法。 ... [详细]
  • 本文详细介绍了如何在 Postman 中配置和发送带有 Cookie 的请求,包括不同版本的 Postman 如何处理 Cookie,以及如何启用拦截器来管理 Cookie。 ... [详细]
  • 软件测试行业深度解析:迈向高薪的必经之路
    本文深入探讨了软件测试行业的发展现状及未来趋势,旨在帮助有志于在该领域取得高薪的技术人员明确职业方向和发展路径。 ... [详细]
  • 如何将PostMan接口脚本快速集成至JMeter进行压力测试
    本文详细介绍了如何将PostMan中的接口脚本快速迁移至JMeter中,以实现高效的压力测试。适合希望利用现有PostMan资源进行性能测试的技术人员。 ... [详细]
  • 本文介绍了多种常用的开发工具,包括PyCharm、Appium、Jenkins、Postman、Fiddler、Charles、Airtest、Android Studio、Navicat和Typora,并提供了它们的基本使用方法。 ... [详细]
  • 本文介绍了如何使用Postman构建和发送HTTP请求,包括四个主要部分:方法(Method)、URL、头部(Headers)和主体(Body)。特别强调了Body部分的重要性,并详细说明了不同类型的请求体。 ... [详细]
  • 20款必备PS插件免费大放送,附详细安装指南
    对于众多关注小资源并学习PS的用户来说,每次分享设计素材都会收到大量反馈。为了更好地满足大家的需求,今天我们特别推出了20款必备的PS插件大合集,并附有详细的安装指南,确保每位用户都能轻松上手,提升设计效率。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 深入解析Postman内置变量的实用技巧与示例代码
    本文详细探讨了Postman内置变量的实用技巧和应用案例,通过具体的示例代码,全面解析了这些变量在实际开发和测试中的使用方法,为读者提供了宝贵的学习和参考资源。 ... [详细]
  • 本文深入探讨了在Spring Boot中处理RESTful风格的表单请求的方法,包括请求参数处理、请求映射以及RESTful设计原则的应用。文章详细介绍了如何利用HTTP动词(如GET、POST、PUT、DELETE)来操作资源,并结合Spring Boot的注解(如@GetMapping、@PostMapping等)实现高效、清晰的请求处理逻辑。通过实例分析,展示了如何在实际项目中应用这些技术,提高开发效率和代码可维护性。 ... [详细]
  • Spring Boot 实战(一):基础的CRUD操作详解
    在《Spring Boot 实战(一)》中,详细介绍了基础的CRUD操作,涵盖创建、读取、更新和删除等核心功能,适合初学者快速掌握Spring Boot框架的应用开发技巧。 ... [详细]
  • 数据结构与算法:HyperLogLog 统计、布隆过滤器应用、缓存机制挑战及解决方案、Redis 性能优化与监控、哨兵模式、版本控制工具 Git
    本文探讨了数据结构与算法在实际应用中的多个方面。首先介绍了HyperLogLog算法,用于高效地进行基数统计,能够准确估算大规模数据集中的唯一元素数量。接着讨论了布隆过滤器的应用,该过滤器在空间效率和查询速度上具有显著优势,适用于大数据场景下的快速成员检测。此外,文章分析了缓存机制面临的挑战及其解决方案,包括LRU和LFU等策略,并详细阐述了Redis的性能优化与监控方法,如使用哨兵模式实现高可用性。最后,介绍了版本控制工具Git的基本操作和最佳实践,帮助开发者有效管理代码版本。 ... [详细]
author-avatar
xiaodanzhang
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有