返回顶部
首页 > 资讯 > 精选 >GO怎么降低圈复杂度
  • 544
分享到

GO怎么降低圈复杂度

2023-07-04 18:07:48 544人浏览 独家记忆
摘要

这篇“Go怎么降低圈复杂度”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GO怎么降低圈复杂度”文章吧。对业务函数需要做基本的

这篇“Go怎么降低圈复杂度”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GO怎么降低圈复杂度”文章吧。

对业务函数需要做基本的封装

首先咱们编码前一定会去捋清楚基本的需求,设计,以及实现流程,对于需要用到的工具我们会对代码结构进行分层

例如一些与业务主逻辑没有什么关联的功能就可以独立封装,便于维护和使用,例如:

  • 工具包(例如语言中的各种计算,数据处理,加解密等等)

  • 基本的 rpc 通信

  • Http 相关的各种通信方式

  • 基本的中间件,拦截器,打点接口延时等等

  • 数据库操作(独立封装 DAO 层提供出来)

  • ...等等

尽可能的将这些单独的功能模块拆解出去,独立出来,单独维护

对于那种没有必要同步的功能,完全可以通过异步化来进行处理,异步的话相信你会很容易想到消息队列来进行实现

自然实际项目中你能够看到最开始可能也会这样去做,但是随着业务越来越复杂,这些独立的模块被各种包进行使用,甚至有的开始慢慢的弄成定制化的方式

例如

func OpenTenant(){    // 校验基本租户信息    // 检查租户是否特权,完成权限分配    // 检查实际开户的线路,分配各种租户下的必备账号    // 完成各种系统的对接交互    // 进行数据库操作    // 返回结果}

对于一个基本的开户流程,我们或许可以在代码中看到第一步做什么,第二步又做什么,第三步... ,然而每一个大步骤下面还有各种小步骤,每一个小步骤也会有自己的复杂逻辑

虽然有了基本的封装,但是使用的时候,可能还是会写到哪,需要啥就去按需定义啥

最终就会看到一个函数上千行,让你去阅读和维护,你内心能不拒绝吗吗?

发现对模块进行独立封装还是不太够,代码里面太多的冗余代码,这个时候咱们就可以使用接口来做抽象

用接口来做抽象

使用接口来做抽象的话,相当于是提前考虑好这一类的业务需要去考虑哪些问题,需要注意哪些场景,需要实现哪一些接口

不同的对象各自去实现自己的内容就可以了,单独去维护自己的对象

例如上面的 A 系统的开户流程

// 开户 interface{}type OpenTenant interface{   ValidateTenantInfo(xxx)xxx // 校验基本租户信息   CheckPrivilege(xxx) xxx // 检查租户是否特权,完成权限分配   CheckLine(xxx) xxx // 检查实际开户的线路   ProcessNeccessaryAccount(xxx) xxx //分配各种租户下的必备账号   ProcessNoticeMsg(xxx) xxx// 完成各种系统的对接交互   AddTenant(xxx) xxx// 进行数据库操作}

这仅仅是一个 demo,对于一个开户 interface{} 来说,A 系统可以去实现,B 系统仍然也可以去实现,各自完成自己的内容,例如这样

GO怎么降低圈复杂度

对于优化代码的话,我们就可以将上述的一些实现步骤,放到这个接口中来即可

咱们定义接口,更多的是去规范流程和便于维护,这样还可以让我们的程序往高内聚低耦合方面去靠,不同的对象之间,完全是安全的,自己玩自己的一套,只不过遵循的规范是一样的的

尽可能降低圈复杂度

圈复杂度也可以理解为条件复杂度,是一种用来衡量代码复杂度的标准

例如一些没有判断语句的代码,圈复杂度就是 1

如果是 if...else 那么圈复杂度就是 2 ,简单的就可以理解为涉及到判断条件的数量,那么就 +1

例如有这样的代码

func testDemo() {    var op OpenTenant    switch TenantType {        case A:            op = a.New()        case B:            op = b.New()        case C:            op = c.New()        default:           ...    }    op.ValidateTenantInfo()....}

那么就如上demo ,来看,圈复杂度就是 4 ,其中有 3 个判断条件和一个默认的正常顺序,因此是 3 +1 = 4

这个时候,我们可以如何降低圈复杂度呢?

我们完全就可以使用表格的方式,访问数据直接访问表格就可以了,尽可能的减少这些判断条件,例如我们就可以这样来写

var openTenantMap = map[string]openTenantObject{    A: a.New(),    B: b.New(),    C: c.New(),}func testDemo(){    op := openTenantMap[TenantType ]    ...    op.ValidateTenantInfo()    ...}

这种方式,是不是就可以将圈复杂度降低到 1 了呢?而且看起来也优雅了很多

以上就是关于“GO怎么降低圈复杂度”这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注编程网精选频道。

--结束END--

本文标题: GO怎么降低圈复杂度

本文链接: https://lsjlt.com/news/346871.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • GO怎么降低圈复杂度
    这篇“GO怎么降低圈复杂度”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“GO怎么降低圈复杂度”文章吧。对业务函数需要做基本的...
    99+
    2023-07-04
  • 怎么降低代码的圈复杂度
    本篇内容主要讲解“怎么降低代码的圈复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么降低代码的圈复杂度”吧!0. 什么是圈复杂度可能你之前没有听说过这个词...
    99+
    2024-04-02
  • JavaScript重构技巧中如何降低函数复杂度
    这篇文章给大家介绍JavaScript重构技巧中如何降低函数复杂度,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。JavaScript 是一种易于学习的编程语言,编写运行并执行某些操作的...
    99+
    2024-04-02
  • 浅谈如何降低软件复杂性
    目录前言导致软件复杂的原因如何降低软件的复杂性对 “战术编程” Say No!让模块更“深”一点!那么,怎样才能设计出一个深模块呢?更简单的接口更通用的接口隐藏细节进行分层设计!学会...
    99+
    2024-04-02
  • 分析 Go 语言中的时间复杂度和空间复杂度
    Go 语言是一种越来越流行的编程语言,它被设计成易于编写、易于阅读和易于维护的语言,同时也支持高级编程概念。时间复杂度和空间复杂度是算法和数据结构分析中重要的概念,它们衡量着一个程序的...
    99+
    2024-04-02
  • 服务器硬件标准化:降低复杂性、提高效率
    引言 在当今快速发展的数字时代,企业面临着海量数据存储和处理的挑战。服务器硬件作为数据中心的基础设施,扮演着至关重要的角色。然而,异构化和非标准化的服务器硬件往往会带来复杂性、增加维护成本并阻碍效率提升。因此,服务器硬件标准化已成为简化...
    99+
    2024-02-28
    服务器硬件、标准化、复杂性、效率、数据中心
  • 亚马逊服务器怎么降低存储速度
    1. 了解亚马逊服务器存储速度 在降低亚马逊服务器存储速度之前,我们需要了解存储速度是什么以及它对服务器的影响。存储速度是指服务器存储数据的速度,通常以每秒读写操作的数量来衡量。存储速度越快,服务器处理数据的速度就越快,但也会增加服务器的...
    99+
    2023-10-27
    亚马逊 速度 服务器
  • 怎么降低python版本
    这篇“怎么降低python版本”文章,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要参考一下,对于“怎么降低python版本”,小编整理了以下知识点,请大家跟着小编的步伐一步一步的慢慢理解,接下来就让我们进入主题吧。...
    99+
    2023-06-06
  • 亚马逊服务器怎么降低存储速度呢
    S3可以提供多种不同的存储选项,包括MySQL、MongoDB、Redis、Cassandra和Kubernetes等。它还可以根据应用程序的需要自动调整存储空间,以确保最佳性能和吞吐量。 此外,S3还支持缓存技术,可以将数据预先缓存到内...
    99+
    2023-10-27
    亚马逊 速度 服务器
  • pycharm怎么降低python版本
    如何在 pycharm 中降低 python 版本?在 pycharm 中降低 python 版本,请按照以下步骤操作:1. 打开 python 解释器设置;2. 选择要降低的版本;3....
    99+
    2024-04-24
    python pycharm
  • 怎么理解Java算法复杂度
    本篇内容主要讲解“怎么理解Java算法复杂度”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么理解Java算法复杂度”吧!大O符号衡量时间复杂度通常使用”大O符号“。什么是大O符号?我们需要先看...
    99+
    2023-06-02
  • web算法复杂度怎么理解
    本篇内容介绍了“web算法复杂度怎么理解”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!算法学(Algorithmics)是设计和研究算法的科...
    99+
    2023-06-03
  • oracle怎么设置密码复杂度
    在Oracle数据库中,可以通过以下步骤来设置密码复杂度: 使用管理员权限登录到Oracle数据库。 运行以下SQL语句查看...
    99+
    2024-05-21
    oracle
  • web算法的时间复杂度和空间复杂度是什么
    这篇文章主要介绍了web算法的时间复杂度和空间复杂度是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇web算法的时间复杂度和空间复杂度是什么文章都会有所收获,下面我们一起来...
    99+
    2024-04-02
  • 怎么降低网站跳出率
    这篇文章给大家分享的是有关怎么降低网站跳出率的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一,站内布局不合理用户通过搜索关键词来到你的网站,看到的内容和关键词也是高度相关,用户停...
    99+
    2024-04-02
  • Linux怎么降低cpu占用率
    要降低Linux系统的CPU占用率,可以尝试以下几种方法:1. 使用优化的内核:升级或安装适合你的系统的最新内核版本,新版本的内核可...
    99+
    2023-08-30
    Linux
  • ubuntu怎么降低内核版本
    要降低Ubuntu的内核版本,可以按照以下步骤进行操作:1. 打开终端(Terminal)。2. 输入以下命令以查看当前正在运行的内...
    99+
    2023-08-26
    ubuntu
  • 电脑显卡温度高怎么办 降低显卡温度方法介绍
    当电脑显卡温度过高时,可以采取以下方法来降低显卡温度:1. 清理电脑内部:显卡周围的灰尘和杂物可能导致散热不良,使用吹气罐或者吸尘器...
    99+
    2023-08-17
    电脑
  • 怎么用JavaScript学习算法复杂度
    这篇文章给大家分享的是有关怎么用JavaScript学习算法复杂度的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。JavaScript的作用是什么1、能够嵌入动态文本于HTML页面。2、对浏览器事件做出响应。3、读...
    99+
    2023-06-14
  • Linux中怎么设置密码复杂度
    本篇文章给大家分享的是有关Linux中怎么设置密码复杂度,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。在大多数 Linux 系统中,我们可以用 PAM(可插拔认证模块plugg...
    99+
    2023-06-16
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作