首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何将这些臃肿的条件语句重构为数组

将臃肿的条件语句重构为数组可以提高代码的可读性和可维护性。下面是一种常见的重构方法:

  1. 创建一个数组,用于存储条件语句的各个分支。
  2. 每个条件语句的分支可以表示为一个对象,对象包含两个属性:条件和对应的处理逻辑。
  3. 将每个条件语句的分支对象添加到数组中。
  4. 遍历数组,逐个判断条件并执行对应的处理逻辑。

以下是一个示例代码:

代码语言:txt
复制
const conditions = [
  {
    condition: (input) => input === 1,
    action: (input) => {
      // 处理逻辑
      console.log("条件1");
    },
  },
  {
    condition: (input) => input === 2,
    action: (input) => {
      // 处理逻辑
      console.log("条件2");
    },
  },
  {
    condition: (input) => input === 3,
    action: (input) => {
      // 处理逻辑
      console.log("条件3");
    },
  },
  // 可以继续添加更多的条件分支
];

function processInput(input) {
  for (const condition of conditions) {
    if (condition.condition(input)) {
      condition.action(input);
      break;
    }
  }
}

// 调用示例
processInput(2); // 输出:条件2

通过将条件语句重构为数组,可以方便地添加、删除或修改条件分支,使代码更加灵活和可扩展。此外,还可以将条件分支的处理逻辑封装成独立的函数,提高代码的复用性。

腾讯云相关产品和产品介绍链接地址:

  • 云服务器(CVM):https://cloud.tencent.com/product/cvm
  • 云数据库 MySQL 版(CDB):https://cloud.tencent.com/product/cdb
  • 云原生容器服务(TKE):https://cloud.tencent.com/product/tke
  • 人工智能平台(AI Lab):https://cloud.tencent.com/product/ailab
  • 物联网开发平台(IoT Explorer):https://cloud.tencent.com/product/iothub
  • 移动应用托管服务(Serverless Cloud Function):https://cloud.tencent.com/product/scf
  • 对象存储(COS):https://cloud.tencent.com/product/cos
  • 区块链服务(Tencent Blockchain):https://cloud.tencent.com/product/tencentblockchain
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/metaverse
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

避免锁表:Update语句Where条件添加索引字段

最近在灰度环境中遇到一个问题:某项业务在创建数据时耗时异常长,但同样代码在预发环境中并未出现此问题。起初我们以为是调用第三方接口导致性能问题,但通过日志分析发现第三方接口响应时间正常。...深入分析后,问题核心暴露出来:另一业务流程中对工单表执行更新(UPDATE)操作SQL,其where子句中涉及字段缺少必要索引,导致其他业务在操作表中数据时需要等待该更新完成。...问题描述 mysql 修改数据时,如果where条件字段未加索引或者未命中索引会导致锁表。这种锁表行为会阻塞其他事务对该表访问,显著降低并发性能和系统响应速度。...; 总结 在编写Update语句时,务必注意Where条件中涉及字段是否有索引支持。...避免全表锁关键在于优化查询,利用索引提高查询效率,减少系统性能影响。通过合理地设计索引,并确保Update语句Where条件包含索引字段,可以有效地提升数据库性能和并发能力。

28910

6个重构方法提升80%代码质量

这些类往往会变得很臃肿,是因为不同且在功能上缺少关联方法都放在了相同类里面。...另外,有时候一些类过于臃肿是因为它包含了被其他类使用本应该是其他类成员方法成员方法。 这些方法也应该被迁移到合适类中。...提取方法:像上面提到“过长方法”这种代码异味可以通过从旧方法中提取代码到一个或多个新方法中消除。 分离条件:许多时候,一个方法很长是因为包含好几个分支语句(if-else)。...这些分支条件可以被提取和移动到几个单独方法中。这确实能大大改善代码可读性和可理解性。 引入参数对象/保留全局对象:在我做代码审查时发现另外一个很常见情况 - 好几个参数被传入方法。...在这种场景,建议将相关方法参数组成一个对象(引入参数对象),让方法传递这些对象而不是每个单独参数。 用符号常量替换魔法数字:对于有意义并且到处被使用字面常量,应该为它们分配一个命名常量。

65030

优雅地处理Python中条件分支:字典映射、函数组合与match-case语句

在本文中,我们探讨了如何在Python中优雅地处理条件分支,以避免使用过多if语句。文章介绍了两种解决方案:字典映射与函数组合以及Python 3.10中引入match-case语句。...在这篇博文中,我们将介绍如何在不使用大量if语句情况下优雅地处理条件分支,包括字典映射、函数组合和Python 3.10中引入match-case语句。 2....方案一:字典映射与函数组合 为了实现优雅条件分支,我们可以使用Python字典映射和函数组合。首先,针对不同事件类型,我们定义对应函数。...我们可以使用match-case语句来实现优雅条件分支。...最后 通过使用字典映射、函数组合或 match-case 语句,我们可以在Python中优雅地处理条件分支,避免使用大量if语句这些方法不仅使代码更简洁,而且易于维护和扩展。

34220

代码重构场景总结

核心思想:拆细、公用 重构可以是修改变量名、重新安排目录这样简单物理重构,也可以是抽取子函数、精简冗余设计这样稍许复杂逻辑重构。但均不改变现有代码功能。...了解敌人——丑陋代码 臃肿类 开发者缺乏对最基本编码原则,即“单一职责原则”(SRP)理解。...开发者不去思考这些功能是不是应该放在这同一个类中,导致这些类会变得很臃肿,造成一个类几千行,让下一个接盘侠欲哭无泪。 臃肿方法 好几十上百行一个函数堆在一块,用面向过程思想来写代码。...建议可以将参数组成一个对象传入。 层层嵌套判断 如果逻辑不复杂尽量减少if-else分支包裹,他人太难阅读。比如不满足条件了直接return,不走其他代码,这样可以减少一层嵌套。...通常做法:判断语句,if条件成立,执行代码块,诶,这样就生成了一个嵌套层级。 优化核心思想:直接判断不满足条件,if条件成立,直接return,尽快跳出方法来减少嵌套层级。

71130

改善你代码:使用这5种重构技术

本文由 Suraj Vishwakarma 撰写博文,这篇文章讨论了如何将代码重构整合到你编程过程中,建议你特别为重构代码分配时间,并将较大重构问题分解较小问题进行处理。...代码重构可以提高代码可读性、可维护性和可扩展性。它还旨在提高性能和提高开发人员生产力。 今天,我们将研究一些技巧,这些技巧可以帮助我们以更好方式重构代码。...如何整合重构 在寻找改进重构技巧之前,让我们看看如何将代码重构集成到你编码过程中。...可以使用以下建议来实现这个目的: 专门分配时间来重构代码 将较大重构问题分解较小问题以进行管理 尝试让整个团队参与重构过程 使用自动化工具,可以帮助您查找常见重构错误 提取方法 这种方法涉及将代码块转换为单独方法...因为可以用更少代码实现相同功能。 简化条件语句:如果一个方法有复杂条件语句,请考虑通过合并条件或使用三元运算符来简化它们。 使用懒加载 这是一种只在需要时加载对象技术。

29420

编程中语句

大家好,又见面了,我是你们朋友全栈君。 什么是卫语句 在《阿里巴巴Java开发手册》中提到,多层条件语句建议使用卫语句、策略模式、状态模式等方式重构。 那么,什么是卫语句呢?...在中文维基百科中是这样介绍 在计算机程序设计中,卫(guard)是布尔表达式,其结果必须真,程序才能执行下去。卫语句(guard code或guard clause)用于检查先决条件。...,从是 3、4、5 倍数反面思考,也就是哪些情况不是 3、4、5 倍数,先把这些情况摘出来,然后结束本次循环,继续找下一个数。...也就是排除那些不符合条件情况,剩下自然就是符合条件了。希望通过这个小例子能让你明白到底什么是卫语句。 总结 函数中条件逻辑使人难以看清正常分支执行路径。使用卫语句表现所有特殊情况。...所谓卫语句,如果某个条件极其罕见,就应该单独检查该条件,并在该条件真时立刻从函数中返回。这样单独检查常常被称为“卫语句”。 一个直观感受是,使用卫语句后能够让代码逻辑更清晰且代码没那么臃肿

83010

为什么if-else会影响我代码复杂度

关于if-else争议 我之前写了一篇文章《我用规则引擎消除if语句,提高了代码可扩展性》,这篇文章我想阐述观点是复杂if语句可能会影响代码阅读和代码扩展性,会将非业务条件逻辑与业务逻辑混合在一起...时间长了代码会越来越臃肿,因此这种情况下我推荐使用一些设计模式例如策略模式,责任链模式等去优化if语句带来问题,文中我发现使用规则引擎也能实现类似效果,因此介绍了怎么使用规则引擎Easy Rules去取代...其实这里使用设计模式并不复杂,主要就是 将条件抽出,形成条件类, 然后将条件存入集合中, 遍历这个集合即可 如果我们需要修改条件,只需要修改条件类,即步骤1即可。2、3步骤代码我们不需要去管理。...如果随着版本迭代,if-else越来越多,堆积代码越来越臃肿,已经影响代码阅读和功能扩展。我们就可以考虑怎么优化if-else了。...很多项目其实会有重构环节,我们在重构时思考我觉得也不晚。 关于减少复杂if-else方法,推荐大家看看这些文章: “[if-else语句太多了?

1.5K10

什么是卫语句?更优雅代码方式

也就是我们把不正常条件先摘出来处理,剩下就都是正常情况了。这其实就是卫语句思考模式,也就是逆向思考。卫语句可以减少 if-else 语句嵌套情况出现。...所以在阿里巴巴 Java 规范里也写到 “多层条件语句建议使用卫语句、策略模式、状态模式等方式重构。” 为了让大家对卫语句有一个直观认识,我将给大家举一个例子。...“横放着金字塔”,而如果我们逆向思考,从是 3、4、5 倍数反面思考,也就是哪些情况不是 3、4、5 倍数,先把这些情况摘出来,然后结束本次循环,继续找下一个数。...也就是排除那些不符合条件情况,剩下自然就是符合条件了。希望通过这个小例子能让你明白到底什么是卫语句。...虽然给大家解释了什么是卫语句,但是这种逆向思维模型 if-else 语句为什么叫卫语句我还没有找到出处,可能它就是保卫代码不臃肿吧。 ---- 原文地址 www.chuckfang.com

13.6K73

代码重构新手教程:如何将烂代码变成好代码?

作者 | 王莉敏 策划 | 蔡芳芳 作为有几年工作经验程序员,都会对 bad code 不满意。如何将烂代码变成好代码,本文将由浅入深、一步步带你理解重构奥秘,让你对重构有个基本了解。...以上这些好处是彼此联系,比如当你接手一个遗留工程,前开发人员早已不知去向,不管是要增加功能还是修正 bug,你都需要读懂代码,这就需要提高程序可读性,你能依靠除了你堪比福尔摩斯推理能力,就只有重构这把杀猪刀了...对于逻辑混乱代码,如在循环中随意使用 break,复杂 if 语句嵌套等,你要做是理清逻辑,重构代码,而不是让注释替你补锅。...负值条件重构条件或循环语句中,使用负值条件,会让代码难以理解、容易出错,比如判断是否男性,条件写成了 "!...isNotFemale(gender)" 重构方法是将条件改成正值,并调换 if/else 语句代码块顺序。

58620

怎么组织 Angular 项目 |Top 5 技巧

准守单一职责原则 很多单应用程序核心是具有臃肿代码库。从本质上讲,这些臃肿程序很难维护。从某种意义上讲,他们很脆弱,脆弱到更改一行代码可能对到整个程序产生灾难影响。...为了确保你代码能够满足这种要求,你可以问自己一个问题:这代码是干什么?如果自己回答包含 and 这个关键字,那么你需要将你代码重构单一职责代码。...传统编码组件实践推荐单一责任原则。 在这种方法下,服务和组件被编写单独项目。 但是,考虑下入锅删除这些服务组件会发生什么?你最终得到是死代码,只会使得仓库变得更加混乱。...虽然这使得定位代码变得更加容易,但是当它在编写导入语句时提出了挑战。 当一个目录结构开始超过三个或者四个级别的时候, import 语句就会变得非常长并且难以阅读。...当代码编译后,在该数组中定义路径别名会替换成真实路径。每个路径值是一个包含实际路径和别名键值对对象。 构建 Angular 应用程序并对其进行扩展是一项持续练习。

1.3K10

Redux 包教包会(二):趁热打铁,重拾初心

重构代码:将 TodoList 部分迁移到 Redux 在上一篇教程中,我们已经把 Redux 核心概念讲完了,并且运用这些概念重构了一部分待办事项应用,在这一小节中,我们将完整地运用之前学到知识,...注意 我们 todos reducers 只负责处理原 initialState todos 部分,所以这里它 state 就是原 todos 属性,它是一个数组,所以我们在 switch 语句里...,进行数据改变时,要对数组进行操作,并最后返回一个新数组。...组合多个 Reducer 当我们将 rootReducer 逻辑拆分,并对应处理 Store 中保存 State 中属性之后,我们可以确保每个 reducer 都很小,这个时候我们就要考虑如何将这些...case 语句,如果存在,所有的这些 case 语句都会响应。

2.3K40

白盒测试工具 - sonar报告常见示例分析,sonar代码质量问题分析演示

第一章:bug分析 ① 操作符两边使用相同值 译文: 在二进制操作符两边使用相同值几乎总是错误。...在逐位运算符和大多数二进制数学运算符情况下,在运算符两边都有相同值会产生可预测结果,应该加以简化。...第二章:代码味道 ① 不要有注释代码,会使代码臃肿降低可读性。 译文: 程序员不应该注释掉代码,因为代码会使程序臃肿,降低可读性。...② 合并可折叠语句会增加代码可读性。 两个 if 条件语句嵌套,完全可以用一个 if ,加上 and 连接词即可。 译文: 合并可折叠语句会增加代码可读性。...⑦ 重复字符串文本使重构代码过程容易出错 我圈住字符串在代码里出现 3 次,重构代码时一定要小心出问题。 译文: 重复字符串文本使重构过程容易出错,因为必须确保更新所有出现字符串。

2.1K30

还在重复写空指针检查代码?考虑使用 Optional 吧!

还记得刚入行程序员时候,三天两头碰到空指针异常引发 Bug,解决完一个,又在另一处碰到。那时候师兄就教我,不要相信任何『对象』,特别是别人给你这些地方都加上判断。...于是代码通常会变成下面这样: if(obj!=null){ // do something } 有了这个防御之后,虽然不用再担心空指针异常,但是过多判断语句使得代码变得臃肿。...后来接触到 Optional 其他 API,我才发现这个类真正有意义是下面这些 API。如果使用过 Java8 Stream API,下面 Optional API 你将会很熟悉。...如果不符合条件,将会返回一个空 Optional 。...Department#getCompany返回对象 Optional 三、代码重构 上面我们学习了 Optional 类主要 API ,下面我们使用 Optional 重构文章刚开头代码

60540

还在重复写空指针检查代码?考虑使用 Optional 吧!

还记得刚入行程序员时候,三天两头碰到空指针异常引发 Bug,解决完一个,又在另一处碰到。那时候师兄就教我,不要相信任何『对象』,特别是别人给你这些地方都加上判断。...=null){ // do something } 有了这个防御之后,虽然不用再担心空指针异常,但是过多判断语句使得代码变得臃肿。...4)Optional#filter 有时候我们需要某些属性满足一定条件,才进行下一步动作。这里假设我们当 Company name 属性 Apple,打印输出 ok。...如果不符合条件,将会返回一个空 Optional 。...Department#getCompany返回对象 Optional 03、代码重构 上面我们学习了 Optional 类主要 API ,下面我们使用 Optional 重构文章刚开头代码

1.3K20

还在重复写空指针检查代码?考虑使用 Optional 吧!

还记得刚入行程序员时候,三天两头碰到空指针异常引发 Bug,解决完一个,又在另一处碰到。那时候师兄就教我,不要相信任何『对象』,特别是别人给你这些地方都加上判断。...=null){ // do something } 有了这个防御之后,虽然不用再担心空指针异常,但是过多判断语句使得代码变得臃肿。...4)Optional#filter 有时候我们需要某些属性满足一定条件,才进行下一步动作。这里假设我们当 Company name 属性 Apple,打印输出 ok。...如果不符合条件,将会返回一个空 Optional 。...Department#getCompany返回对象 Optional 03、代码重构 上面我们学习了 Optional 类主要 API ,下面我们使用 Optional 重构文章刚开头代码

1K40

代码量锐减 80%,一次祖传代码重构实践

目录 1 背景 2 重复代码 3 过长函数 4 臃肿类 5 过长参数列表 6 令人迷惑临时字段 7 传入参数范围过大 8 不必要串行 9 被忽略编译 warning 10 魔法数字和常量 11...Query(查询语句)产出切词、词权、紧密度、意图识别结果。...因为 is_second 这个变量含义很绕。 6.2 动机 在循环中,如果需要在特定条件下,对 i 及 i+1 个元素进行操作,我担心会溢出。...这些函数真的需要这么多信息? 7.2 动机 我懒得去思考不同接口数据依赖。于是将所有数据塞到同一个结构体,要用什么直接拿,要写入什么信息,直接写入。...下面代码 sprintf 写入 char 数组时候,没有给\0保留位置,最终栈空间因为越界被写坏,函数局部变量值都变成异常值,导致后面的数组访问到随机内存空间。

78971

狗屎一样代码!快,重构我!

这种情况下,临时变量可以帮助你将表达式分解比较容易管理形式。 在条件逻辑中,你可以用这项重构将每个条件子句提炼出来,以一个良好命名临时变量来解释对应条件子句意义。...5、以对象取代数组 你有一个数组,其中元素各自代表不同东西。以对象替换数组。...对于数组每个元素,以一个字段来表示 6、复制“被监视数据” 你有一些领域数据置身GUI控件中,而领域函数需要访问这些数据。将该数据复制到一个领域对象中。...让这个函数返回该集合一个只读副本,并在这个类中提供添加/移除集合元素函数。 (六)简化条件表达式 1、分解条件表达式 有一复杂条件语句。从if、then、else三个段落中分别提炼出独立函数。...针对该参数每一个可能值,建立一个独立函数。 如果某个参数有多种可能值,而函数内又以条件表达式检查这些参数值,并根据不同参数值做出不同行为,那么就应该使用本项重构

73930
领券