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

将巨大的if语句变量重构为数组

是一种优化代码结构的方法,它可以提高代码的可读性、可维护性和可扩展性。通过将if语句中的变量和对应的处理逻辑存储在数组中,可以简化代码,并且可以方便地添加、删除或修改变量和对应的处理逻辑。

重构为数组的步骤如下:

  1. 定义一个包含变量和对应处理逻辑的数组。数组的每个元素包含两部分:变量和对应的处理逻辑。变量可以是任何类型,例如字符串、数字或对象。处理逻辑可以是函数、方法或其他代码块。
  2. 遍历数组,根据变量的值执行对应的处理逻辑。可以使用循环结构(如for循环)或高阶函数(如forEach)来遍历数组。
  3. 如果需要对变量进行分类,可以使用多维数组或对象来存储变量和对应的处理逻辑。例如,可以使用对象的属性来表示不同的分类,每个属性对应一个数组,数组中存储该分类下的变量和对应的处理逻辑。

重构为数组的优势:

  • 提高代码的可读性和可维护性:将复杂的if语句转换为数组,使代码更加简洁和易于理解。开发人员可以更快地理解代码的逻辑,并且可以方便地修改或扩展变量和对应的处理逻辑。
  • 减少重复代码:通过将相似的处理逻辑存储在数组中,可以避免重复编写相同的代码块,提高代码的复用性。
  • 方便添加、删除或修改变量和对应的处理逻辑:通过修改数组中的元素,可以方便地添加、删除或修改变量和对应的处理逻辑,而无需修改大量的if语句。

重构为数组的应用场景:

  • 多条件判断:当存在多个条件需要判断时,可以将条件和对应的处理逻辑存储在数组中,以简化代码。
  • 状态机:当需要实现状态机的逻辑时,可以使用数组来表示状态和对应的处理逻辑,以提高代码的可读性和可维护性。
  • 配置管理:当需要管理大量的配置信息时,可以使用数组来存储配置项和对应的处理逻辑,以方便地进行管理和修改。

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

  • 云函数(Serverless):腾讯云云函数是一种无服务器计算服务,可以让您编写和运行无需管理服务器的代码。链接:https://cloud.tencent.com/product/scf
  • 云数据库 MySQL 版(CDB):腾讯云云数据库 MySQL 版是一种高性能、可扩展的关系型数据库服务。链接:https://cloud.tencent.com/product/cdb
  • 云服务器(CVM):腾讯云云服务器是一种弹性计算服务,提供安全可靠、弹性扩展的云端计算能力。链接:https://cloud.tencent.com/product/cvm
  • 人工智能平台(AI Lab):腾讯云人工智能平台提供了一系列的人工智能服务和工具,帮助开发者构建智能应用。链接:https://cloud.tencent.com/product/ai
  • 物联网套件(IoT Hub):腾讯云物联网套件是一种全面的物联网解决方案,提供设备连接、数据采集、数据存储和应用开发等功能。链接:https://cloud.tencent.com/product/iothub
  • 移动推送(信鸽):腾讯云移动推送是一种消息推送服务,可以帮助开发者向移动设备发送推送通知。链接:https://cloud.tencent.com/product/tpns
  • 对象存储(COS):腾讯云对象存储是一种高可用、高可靠、低成本的云端存储服务,适用于存储和处理各种类型的文件和数据。链接:https://cloud.tencent.com/product/cos
  • 区块链服务(BCS):腾讯云区块链服务是一种基于区块链技术的安全、高效、易用的服务,可用于构建和管理区块链网络。链接:https://cloud.tencent.com/product/bcs
  • 腾讯会议:腾讯会议是一种在线会议和协作工具,提供高清音视频通话、屏幕共享、会议录制等功能。链接:https://meeting.tencent.com/
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

序列分解单独变量

python中,任何序列或可迭代对象都可以通过一个简单赋值操作来分解单独变量。...前提是要求变量总数和结构要与序列相吻合 #_*_coding:utf8_*_ p = (4, 5) x, y = p print(x) # 4 print(y) # 5 data = ['GuoJing...杨过', '小龙女') name, age, (yangguo, xiaolonglv) = data print(yangguo) # 杨过 print(xiaolonglv) # 小龙女 如果元素数量不匹配...小龙女') yangguo, xiaolonglv, yinzhiping = lover # 报错:ValueError: need more than 2 values to unpack 丢弃不要变量...在序列分解成变量时,有些值我们并不需要,可以选一个用不到变量名作为要丢弃名称(一般选用 _ 作为变量名) #_*_coding:utf8_*_ data = ['杨过', '尹志平', '小龙女

87340
  • 数据集按特征|列分割解释变量 X & 响应变量 Y 几种方法

    波士顿房价预测 特点:回归问题,解释变量唯一 利用整数下标 from pandas import read_csv dataset =read_csv('train.csv').values...= "price"] Y = dataset[:,dataset.columns == "price"] 船舶航迹预测 特点:回归问题,解释变量 lat lon from pandas import...,根据bool/条件语句/整数去选择列都可以,比如 X = dataset.iloc[:, dataset.columns !...= "lat"] #上面的只适合一元响应变量特征输入,很可惜 携程下面这样就无法通过编译了 X = dataset.iloc[:, dataset.columns !...= "lon"] #原因如下 上面提到双条件判断出现了[True,False,False,True,True,True]与[False,True,True,False,False,False]判断,出现了多组值判断

    75220

    60 多年 COBOL 语言重构 Java,IBM 用 AI 工具解决大型机维护难

    解决该问题,IBM 周二 宣布推出 生成式 AI 工具推出 watsonx Code Assistant for Z COBOL 代码重构 Java 来实现云上古董大型机软件现代化。...IBM 表示,现代化大型机应用程序利用 AIOps、DevOps、API 和数据集成等学科,轻松这些应用程序集成到混合云架构中。...IBM Z Software 副总裁 Skyla Loomis 表示,“通过生成式 AI 与 watsonx 结合使用,可以对这些 COBOL 应用程序架构进行现代化改造,并有选择地 COBOL...Watsonx Code Assistant for Z 在 COBOL 转换为 Java 同时,可以保留本机 COBOL 语法和架构,从而生成现代开发人员难以维护代码。... COBOL 重构 Java 是一个困难过程,可能需要数十年时间,而且经常会失败。IBM 预计人工智能工具让过程加快一个数量级。

    27320

    Python在生物信息学中应用:序列分解单独变量

    我们有一个包含 N 个元素元组或序列,现在想将它分解 N 个单独变量。 解决方案 任何序列(或可迭代对象)都可以通过一个简单赋值操作来分解单独变量。...唯一要求就是变量总数和结构必须与序列相吻合。...例如: >>> s = 'Hello' >>> a, b, c, d, e = s >>> a 'H' >>> b 'e' >>> e 'o' >>> 当做分解操作时,有时候想丢弃某些特定值。...Python 并没有提供特殊语法支持这个需求,但是你可以使用任意变量名去占位,到时候不使用这些变量就行了。...50, 91.1, (2012, 12, 21) ] >>> _, shares, price, _ = data >>> shares 50 >>> price 91.1 >>> 但是请确保你选择变量名没有在其他地方使用到

    15010

    重构:你可能不知道重构场景

    长函数 应该有很多同学经手过别人数百行甚至上千行代码,让人质疑人生。方便理解,最好方式是把长函数分解若干小函数,搭配上易理解函数名,便可以像自然语言一样理解代码。...工具小助手 一款语言包含很多基本类型与内置函数,但不能满足所有需求,比如金额单位转换、时间数组格式转换、UUID生成等简单又容易忽略小功能,如果这些功能出现频率很高,规则改变会带来一连串修改,这时可以考虑这些小功能抽象工具函数...,并将这些函数组合为工具类。...可以switch语句移植独立函数,这些函数组成基类,case语句调用子类对应函数,具体实现让子类去完成,这样支付渠道增加和变更只需要修改一个类即可。...让人犯晕变量 一个类会设置一些特殊情况设置变量,这些变量不一定都会被使用,经手你代码的人还要猜测当时设置这些变量目的,非常让人头大,不如把这些变量和相关函数单独放在一个类中,屏蔽具体细节,需要功能通过函数来表达

    29320

    从PHP代码细节说起

    原本拥挤在一起两个功能进行了拆分, 上面部份是求最大值, 下面部份是对两个数组进行映射。...1.array_filter函数 这段代码比较好理解,数组中性别字段数据项提取出来。...整段代码逻辑大致如下 1.定义result数组, 用来存放结果 2.循环数组, 对每一个数据项进行条件判断, 查看其中性别字段是否女 3.如符合条件则放入result数组中 这是原汁原味命令式程序代码...如果data变量数据并非存放于php数组中, 而是存在于关系数库表之中, 那何取得性别为女数据结果呢?...先看一下下面的php代码 常规PHP写法,代码分别用于计算数组记录中平均年龄和最大年龄,代码需要循环数组,并把计算结果存入一个标量(单个值,区分于列表变量)。

    1.4K70

    代码重构(四):条件表达式重构规则

    当然下方只是我们这儿列举一个夸张示例。 ? 对于这个示例而言,我们不难看出,去代码重复化。print语句移到条件之外。但是要学会举一反三呢,重要重构手法和思想。...如果你对下方代码看着不爽的话,完全可以根据之前我们介绍重构手法“使用查询来替代临时变量”,下方代码继续重构,在本章博客中就不做过多介绍了。 ?...下方代码不难理解,当i20时,我们就翻转标记变量状态,然后if中语句块就不被执行了。 虽然下方代码片段是我写,但是我个人看着超级不舒服。...不光是代码编写规范,也尽量不要使用理解起来比较费劲语句来实现你逻辑。 下方我们创建一种场景,人为创建多个if嵌套情况。...guard语句用法就是如果guard 后方赋值语句所取出nil,那么就会执行else中语句,否则就会继续往下执行。在else中一般是break、return、continue等卫语句

    1.6K90

    关于重构总结

    临时变量妨碍到其他重构手法时 以查询取代临时变量 表达式提炼到一个独立函数中,将有改表达式地方替换为新函数 类中可全局查询,表达式可能变动时 引入解释变量 一个复杂表达式或其一部分结果放进临时变量...代码对参数进行赋值时 以函数对象取代函数 这个函数放进一个单独对象中,如此一来局部变量就成了对象内字段,然后就可以这个大型函数分解多个小型函数。...给对象增加一些可修改数据,并确保对任何一个对象修改都能影响到所有的引用此对象地方时 引用对象改为值对象 将它变成一个值对象 一个引用对象很小且不可变且不易管理时 以对象取代数组 已对象替换数组,...对于数组每一个元素都以一个字段表示 一个数组元素各自代表不同东西时 赋值“被监视数据” 数据复制到一个领域对象中,建立Observer模式,用以同步领域对象和GUI对象内重复数据 一些领域对象数据置身于...“控制标记”作用 以卫语句取代嵌套条件表达式 时使用卫语句表现所有的特殊情况 当条件逻辑有太多嵌套,难以看清执行路径时 以多态取代条件表达式 条件表达式每一个分支放进一个子类内复写函数中,然后原始函数声明为抽象函数

    98510

    读《重构:改善既有代码设计》

    Replace Temp with Query(以查询取代临时变量) 如果去除了临时变量后,更加利于后续重构改动,则会使用这种方法,临时变量所代表逻辑抽取成单独一个函数 虽然对性能有影响,但是重构过去后...,如果不是很严重性能影响,则还是建议改成这样,因为重构过去后对后续重构更有利,更便于以后重构 Introduce Explaining Variable(引入解释性变量逻辑碎片赋给命名友好变量名...with Data Class(以数据类取代记录) 非对象化平面数据类型(如:数组、传递过来没有良好命名属性等),重写成class,只有private属性class 目的只是以后更进一步重构做准备...,这样会提高可读性 Consolidate Conditional Expression(合并条件表达式) 一般在函数入口出会检查参数有效性,如果写有多条if语句判断无效,都返回false,则可以这些都...) 当2个类之间使用了很多委托来进行调用,并且这些委托覆盖面对方大范围时,考虑委托改成继承关系 大型重构 Tease Apart Inheritance(梳理并分解继承体系) 桥接模式分割

    65240

    PHP 基本语法篇:控制结构

    还是以成绩查询系统例,我们要查询学生 ID 1 同学语文成绩对应等级,可以这样编码: $studentId = '1'; $score = $data[$studentId][YUWEN];...如果条件不符合,则 if 条件判断失败,什么也不会执行,比如将上述代码中 $studentId 值设置 2,就是这样效果。...语句重构上面的代码: $studentId = '2'; $score = $data[$studentId][YUWEN]; /*if ($score >= 90) { printf("学生...:\n"; print_r($data[$i]); $i++; } 在这段代码中,首先获取数据总量 $total,然后设置一个迭代变量 $i,每次打印一个学生信息后迭代变量 +1,直到迭代变量值超过数据总量...foreach 在 PHP 中,对于数组循环遍历,尤其是关联数组遍历,还提供了另一个更加强大简单语言结构 —— foreach,通过 foreach 语句,可以更方便地获取键值信息: foreach

    94810

    通过 PHP 原生代码实现视图模板引擎解析和渲染

    在此之前,我们视图渲染实现比较简单粗暴,就是直接通过 include 语句引入对应 PHP 视图模板,然后在当前作用域内有效变量会在引入视图模板中生效,以博客应用首页例,对应视图引入代码是这样...,我们通过 PHP 自带输出控制函数 ob_start 打开输出控制缓冲,然后调用 extract 函数将从外部传入数组变量导入当前符号表(即在当前作用域内以数组键名作为变量名,以对应键值作为变量值...$this->view = $this->container->resolve('view'); } } 接下来在各个控制器中重构视图渲染代码,原来通过 include 语句引入视图模板改为通过...,由于根路径已经通过配置文件设置并在底层生效,所以只需要传入相对根路径相对路径即可,第二个参数是数组格式、需要传入视图模板 PHP 变量,这些变量可以通过数组形式定义传入,也可以通过 compact...函数组合当前作用域内变量传入(以变量名作为键,变量值作为值构建关联数组,组合结果和前一种形式完全一样)。

    2.1K10

    重构方法与实践笔记

    “重写”与“重构”之后,下面专注地讲一下重构 1.1 重构概念和背景 EPC 破窗理论与懒惰:在没有刻意优化下,代码腐烂是必然 80%在别人代码上进行修改 1.2 重构目的:使软件结构更加合理...- 难以维护 - 容易出现bug - 破窗效应 优秀函数原则: 函数一般写10行 超过20行就考虑重构 第一条规则是短小 第二条规则还是短小 如何处理条件语句 - 函数提取:即按照逻辑拆分子函数...- 分解表达式 - 以多态处理堆叠条件表达式(如switch) - 状态模式 - 策略模式 - 条件表达式转换为查找表,使用注解完成映射 2.4 进阶优化 组合函数(Composed Method...嵌套逻辑扁平化 - 管道替代循环,声明式替代命令式 3. 类重构 Program to an interface, not an implementation....- 提取类 - 抽象过度 - 如没有变量,只有方法,则抽象过于具体 - 3.2.3.2 封装:隐藏细节 - 封装细节 - 1. 成员变量,一般设置private - 2.

    90600

    代码重构之道

    重构技巧 简要总结下各类重构技巧,主要分为以下几个方面: 数据级重构 用具名常量来代替魔法数。 更明确或更具信息量名字来重命名变量表达式内联化。 用函数来代替表达式。 引入中间变量。...多用途变量转换为多个单一用途变量。 使用局部变量实现局部用途而不是使用参数。 基础数据类型转化为类。 一组类型码转化为类或是枚举类型。 数组转化为对象。 封装群集。 用数据类替代传统记录。...语句重构 分解布尔表达式。 复杂布尔表达式转换为命名精确布尔函数。 条件语句中不同部分中重复代码合并。...使用break或retum而不是循环控制变量 嵌套if-then-else语句中一旦知道结果就立刻退出,而不是仅仅赋一个返回值. 用多态来代替条件语句(尤其是重复case语句)。...系统级重构 无法控制数据创建明确索引源。 单向类联系改为双向类联系。 双向类联系改为单向类联系。 使用工厂函数而非简单构造函数。 用异常代替错误代码,或者反其道而行之。

    1.1K10

    带你入门前端工程(十):重构

    但我觉得以下八种是比较常用: 提取重复代码,封装成函数 拆分功能太多函数 变量/函数改名 替换算法 以函数调用取代内联代码 移动语句 折分嵌套条件表达式 查询函数和修改函数分离 提取重复代码,封装成函数.../函数改名 无论是变量命名,还是函数命名,都要尽量让别人明白你这个变量/函数是干什么。...变量命名规则着重于描述“是什么”,函数命名规则着重于描述“做什么”。 变量 const a = width * height 上面这个变量就不太好,a 很难让人看出来它是什么。...移动语句 让存在关联东西一起出现,可以使代码更容易理解。如果有一些代码都是作用在一个地方,那么最好是把它们放在一起,而不是夹杂在其他代码中间。最简单情况下,只需使用移动语句就可以让它们聚集起来。...《重构2》也不例外,在看这本书时候一定要带着批判性目光去阅读它。 里面介绍重构手法有很多,多达上百种,但这些手法不一定适用所有人。所以一定要有取舍,里面有用手法摘抄下来,时不时看几遍。

    57630

    实用编程技巧汇总,让代码效率提高一个档次

    第二种方法用一个额外变量len避免了每次条件判断都要重复执行函数strlen(s),而执行该函数是非常耗时(假设字符串长度n,函数执行复杂度O(n)),尤其是当for循环体语句比较少,字符串比较长时候...但是,了解一些编译器控制数据依据对编程也有极大帮助。 一般来说,放到寄存器/缓存数据优先级:用register修饰变量,循环控制变量,auto局部变量,静态变量,用户自己分配内存数据。...2 vector容器底层实现是数组,并且在当元素大于最大容量时候会重新生成一个更大数组原来数组对象复制构造到新数组中。...我们if判断语句顺序变换下: for 所有学生分数 if 分数 >= 80 归优秀段 else if 分数 >= 70 归良好段 else if 分数 >= 60 归及格段...两者时间效率相差巨大,实际运行也发现,前者是后者运行时间两倍多。 switch分支判断 switch语句底层实现主要有三种方式:转换为if else 语句,跳转表,树形结构。

    67920

    自下向上编写容易阅读代码(上)

    ; .......省略50行代码 这段代码如果单独看尚可,如果这是在成百行代码一部分,建议放到一个小方法里,比如,重构 .........; } 重构后,代码阅读者每次看到这里,都会放心跳过这部分代码。...因为从方法名已经了解其作用,能很快扫过这片代码区域 不要使用数组 程序里数组只适合代码编写者看,阅读者无法判断数组代表业务含义,比如 Object[] rets = call(); boolean...类似的列子还有JPA查询,对于不能映射实体,总是返回一个数组,比如 Object[] array = jpa.query("select * from xxx ,yyy ....."); Integer...不一定要取有意义变量名 java 里for循环一般都是使用i变量,这说明了有些情况下,可以用一些简单变量名字代替有意义变量名字。

    77180

    CPU SIMD简介

    :语句,_mm_cvtps_epi32负责float转为int。这样,通过SSE对应实现4个一组逻辑判断。...,并且还要将结果在转回4个float,这个成本是否可以避免。...16字节对齐,而一般float数组只会保证4字节对齐,因此,在声明变量时候,我们需要显示指定16字节对齐,C++ 11中提供了alignas保证数组对齐,而指针类型则需要通过_aligned_malloc...我建议是,重构数据布局,强制让所有的数组都被4整除。 这是一个较大改进,因为新增这些“零头”可能会干扰计算过程,改变数组中元素值。...因此,最好是设计阶段就能做好这类数据布局,重构的话,需要确保这些数组参与计算,不会因为额外增加元素而破坏运算准确性。 要点2:优化数据布局,数组首地址16字节对齐,长度被四整除。AVX?

    2.4K30
    领券