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

优雅的替换掉代码中的ifelse

场景 平时我们在写代码时,需要针对不同情况处理不同的业务逻辑,用得最多的就是if和else。...但是如果情况太多,就会出现一大堆的“if else”,这就是为什么很多遗留系统中,一个函数可能出现上千行的代码。...代码实现 上面的业务场景简单来说就是:针对不同的短信渠道来调用对应的短信平台接口实现短信发送。...代码实现如下(注意下面所有的代码都不能直接运行,只是关键逻辑部分的示例代码): 烂代码示例 我们有一个短信发送类:SmsSendService,里面有一个send方法发送短信 SmsSendService.java...这样我们每次都需要修改原有代码(对更改没有封闭),不断的添加”if else"。

1.1K50
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    用代理模式优雅地写代码

    为了初步解耦,我们用接口来声明, Func user = new User(); user.read(); so far so good… 虽然我们的代码中到处充斥着这种样板代码,重复的实例化和调用接口...,实例化的地方少还好,要是项目里有几百处地方直接调用实例的接口,我们估计要跪… 第二种虽然相对优雅,可是坑也不小,因为"播放广告"这个行为并不是用户的,我们希望功能尽可能的纯粹。...我们用 Proxy,在Producer和Consumer之间加了一层中介,这样一来即使要对Consumer的行为进行干预,也不用到处去修改代码了。...这样当需要操作 Consumer的行为时,只需要修改 Proxy层,而不需要到处去调整 Producer的代码。 但是静态代理的弊端也是很明显的。...当接口的实现类变多时,每次的接口调整也需要修改很多代码。

    57210

    用Java 8 的 Stream 来写代码,干净优雅!

    Java8的新特性主要是Lambda表达式和流,当流和Lambda表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读 1 流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理...不拖泥带水,一气呵成,原来需要写24代码实现的功能现在只需5行就可以完成了 高高兴兴写完需求这时候又有新需求了,新需求如下: 对数据库查询到的菜肴根据菜肴种类进行分类,返回一个Map<Type, List...(1, 2, 3, 4, 5); Stream stream = integerList.stream(); 复制代码 通过集合的stream方法生成流 2.通过数组生成 int[]...Stream stream = Stream.of(1, 2, 3, 4, 5); 复制代码 通过Stream的of方法生成流,通过Stream的empty方法可以生成一个空流 4.通过文件生成...Stream.iterate(0, n -> n + 2).limit(5); 复制代码 iterate方法接受两个参数,第一个为初始化值,第二个为进行的函数操作,因为iterator生成的流为无限流

    60920

    为 Windows 系统替换优雅的苹果字体

    今天给大家推荐一款非常棒的一键更换 Windows 系统字体的软件工具:noMeiryoUI!...noMeiryoUI 是一款在 GitHub 开源的字体修改软件,当你需要修改字体的时候就可以选择这款软件,该软件是默认是英文的,你也可以选择中文的,也可以选择韩文的,提供多个设置功能,在软件界面就可以找到你需要编辑的字体...切换中文版本 官方版本的 noMeiryoUI-2.41 默认是英文版本的,如果想要切换为中文版本的界面,只需要简单的三步。...安装字体 网络搜索你喜欢的字体文件,把对应字体的 tff 文件下载下来,打开下载下来的字体文件,点击左上角的安装即可。或者直接将字体文件复制到此文件件下:C:\Windows\Fonts。 2....利用工具一键替换字体 打开软件,自动显示主题选用的字体。 选择自己需要更换的字体。 一般字体默认大小为 9pt。选择字体之后,如果想要应用到其他单项,点击“统一设定”即可。

    7.5K40

    Pandas中替换值的简单方法

    使用内置的 Pandas 方法进行高级数据处理和字符串操作 Pandas 库被广泛用作数据处理和分析工具,用于从数据中清理和提取特征。 在处理数据时,编辑或删除某些数据作为预处理步骤的一部分。...为此,Pandas 提供了多种方法,您可以使用这些方法来处理 DataFrame 中所有数据类型的列。 在这篇文章中,让我们具体看看在 DataFrame 中的列中替换值和子字符串。...当您想替换列中的每个值或只想编辑值的一部分时,这会派上用场。 如果您想继续,请在此处下载数据集并加载下面的代码。...import pandas as pd df = pd.read_csv('WordsByCharacter.csv') 使用“替换”来编辑 Pandas DataFrame 系列(列)中的字符串...这样如果有人查看的代码可能会很容易理解它的作用并对其进行扩展。 在清理数据时,这是一个相当常见的过程,所以我希望您发现这篇对 Pandas 替换方法的快速介绍对自己的工作有用。

    5.5K30

    Pandas中高效的选择和替换操作总结

    下面我们开始进入正题 为什么需要高效的代码? 高效代码是指执行速度更快、计算容量更低的代码。...让我们来看看之前加载的婴儿名字数据集: 首先看看性别列: names['Gender'].unique() 我们可以看到,女性用大写和小写两个值表示。...如果数据很大,需要大量的清理,它将有效的减少数据清理的计算时间,并使pandas代码更快。 最后,我们还可以使用字典替换DataFrame中的单个值和多个值。...如果想在一个命令中使用多个替换函数,这将是非常有用的。 我们要用字典把每个男性的性别替换为BOY,把每个女性的性别替换为GIRL。...使用字典可以替换几个不同列上的相同值。我们想把所有种族分成三大类:黑人、亚洲人和白人。这里的代码也非常简单。使用嵌套字典:外键是我们要替换值的列名。值是另一个字典,其中的键是要替换的字典。

    1.2K30

    Python生成器:优雅而高效的迭代器

    生成器 是Python中一种非常实用的特性,它能帮助我们编写高效的代码,尤其是在处理大量数据时,它能够帮助我们更有效地处理迭代任务。 本文将详细介绍生成器的原理、用法以及实际应用场景。...这在处理无限序列或需要动态生成数据的场景中非常有用。 3、代码简洁:生成器使代码更加清晰、简洁,减少了样板代码的使用。...在Python中,列表生成式(List Comprehensions)是一种简洁的方式来创建列表。它可以在一行代码中通过对序列进行迭代和应用条件来生成新的列表。...在编写Python代码时,不妨考虑使用生成器来使代码更加优雅和高效。 通过深入了解和合理使用生成器,我们可以编写出更加高效和易维护的Python代码。...写到最后 感谢您的一路陪伴,用代码构建世界,一起探索充满未知且奇妙的魔幻旅程。

    28210

    pandas一个优雅的高级应用函数!

    以下是内容展示,完整数据、和代码可戳《pandas进阶宝典V1.1.6》进行了解。 pipe函数介绍 函数: pipe函数可应用在series和dataframe两个数据结构上。...当只传入一个函数时,pipe()的效果等同于直接用函数对dataframe处理:func(df),与apply()、applymap()、map()等的处理结果是一样的。...如果想省略临时的dataframe也可以将函数像下面这样套用一行代码解决。...rlt = np.add(np.multiply(np.square(df), 1.5), 8) 但上面的写反可读性太差了,一点不优雅,而且随着嵌套增多非常容易看错。...这样做的优点是: 执行顺序一目了然,逻辑清晰 可读性很高 非常优雅 三、特殊传参方式 pipe()默认情况下会将dataframe传给调用函数的第一个参数,但一些函数在定义时第一个参数并不是用来接收dataframe

    23830

    盘点6个Pandas中批量替换字符的方法

    一、前言 前几天在Python最强王者群有个叫【dcpeng】的粉丝问了一个关于Pandas中的问题,这里拿出来给大家分享下,一起学习。...想问一下我有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换呢?...二、解决过程 思路挺简单,限定Pandas处理,想到的方法有很多,这里拿出来给大家分享,希望对大家的学习有帮助。...下面这个是生成源数据的代码: df = pd.DataFrame({'col1': [1, 2, 2, 3, 3, 3, 4, 4, 4, 4]}) df 方法一:【月神】解答 代码如下所示: df[...这篇文章基于粉丝提问,针对有一列编码为1,2,3,4的数据,如何将1批量换为“开心”,2批量换为“悲伤”这种字符替换的问题,盘点了6个Pandas中批量替换字符的方法,给出了具体说明和演示,顺利地帮助粉丝解决了问题

    2.5K10

    用Stream来优化老代码,瞬间干净优雅了!

    Java8 的新特性主要是 Lambda 表达式和流,当流和 Lambda 表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读。...01 流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于 400 的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 Dish.java(菜肴) public...Dish::getName) //提取菜肴名称 .collect(Collectors.toList()); //转换为List } 不拖泥带水,一气呵成,原来需要写 24 代码实现的功能现在只需...8", "Lambdas", "In", "Action"); Stream stream = stringList.stream().map(String::length); 复制代码...07 总结 这篇文章主要介绍了 Stream API 的相关使用,从文中所列举的例子可以看出:通过使用 Stream API 可以简化代码,同时还提高了代码可读性。

    47430

    Pandas中第二好用的函数 | 优雅的apply

    这是Python数据分析实战基础的第四篇内容,也是基础系列的最后一篇,接下来就进入实战系列了。本文主要讲的是Pandas中第二好用的函数——apply。 为什么说第二好用呢?...做人嘛,最重要的就是谦虚,做函数也是一样的,而apply就是这样一个优雅而谦虚的函数。...我们单独用一篇来为apply树碑立传,原因有二,一是因为apply函数极其灵活高效,甚至是重新定义了pandas的灵活,一旦熟练运用,在数据清洗和分析界可谓是“屠龙在手,天下我有”;二是apply概念相对晦涩...接下来,我们通过两个场景,更深入的感受下apply函数的优雅迷人。 场景一 背景:我们拿到了一份4位同学三次模拟考试的成绩,想知道每位同学历次模拟中最好成绩和最差成绩分别是多少。...答案是直接索引,把他看作是一个DataFrame格式的表,要选取第3行的所有值,包括城市和销售额,这里用iloc索引,很简单的一行代码: ?

    1.1K31

    用Stream来优化老代码,瞬间干净优雅了!

    Java8 的新特性主要是 Lambda 表达式和流,当流和 Lambda 表达式结合起来一起使用时,因为流申明式处理数据集合的特点,可以让代码变得简洁易读。...01 流如何简化代码 如果有一个需求,需要对数据库查询到的菜肴进行一个处理: 筛选出卡路里小于 400 的菜肴 对筛选出的菜肴进行一个排序 获取排序后菜肴的名字 Dish.java(菜肴) public...(Dish::getName) //提取菜肴名称 .collect(Collectors.toList()); //转换为List } 不拖泥带水,一气呵成,原来需要写 24 代码实现的功能现在只需...8", "Lambdas", "In", "Action"); Stream stream = stringList.stream().map(String::length); 复制代码...07 总结 这篇文章主要介绍了 Stream API 的相关使用,从文中所列举的例子可以看出:通过使用 Stream API 可以简化代码,同时还提高了代码可读性。

    44920

    如何优雅的合并代码

    IDEA中的代码合并合并代码我相信大家都会,但要是一手merge走天下,遇到高手可就要趴下啦!现代的IDE图形化界面做的很好,git的很多功能原理可以不用了解的那么深刻,只是操作看看就会啦。...,本次推送会失败)mergemerge 是代码合并最简单的方式,所有代码合并的情况都可以使用 merge 。...合并默认使用的是 fast-foward 模式,如下图所示,当合并两个分支时,若顺着一个分支走下去能到达另一个分支,git 只会移动分支指针,也就是说,不会创建新的 commit 节点。...但是这样会丢失合并的信息 ,若想要在任何时候都保留合并信息,可以使用 no-fast-forward 选项。...:想要应用父分支的提交到自己的分支cherry-pick当发现自己的提交写错分支,或者想要快速将另一个分支的某个提交合并到自己的分支,可以考虑使用 cherry-pick。

    19410

    三种方式,教你优雅的替换if-else语句!

    当逻辑分支非常多的时候,if-else套了一层又一层,虽然业务功能倒是实现了,但是看起来是真的很不优雅,尤其是对于我这种有强迫症的程序"猿",看到这么多if-else,脑袋瓜子就嗡嗡的,总想着解锁新姿势...本文将介绍三板斧手段: 优先判断条件,条件不满足的,逻辑及时中断返回; 融入策略模式; 策略模式+工厂+单例模式,锦上添花; 接下来先附上一段很久以前自己写的业务代码,核心逻辑就是在支付回调中根据用户购买的价格包赋予用户对应的权益...我的天,太多if-else了……(看不清楚可以点击图片放大) 1.优先判断条件,不满足及时中断 这点非常容易理解,就是说在业务逻辑里面,先把不符合条件的给先过滤掉,而不是层层嵌套if-else判断,结合代码图看一下...: 2.策略模式改造 先用策略模式替换掉文章开头讲到的,用户充值后根据价格包(付的多少钱)给用户增加VIP天数及抽检机会次数的逻辑,我这里就简化成"根据-价格包区分给用户增加不同的体育会员视频VIP...天数"这个动作来讲解: 表面上看,代码稍微优雅了点,但是还是没和if-else彻底说拜拜,且recharge()充值方法可单独拎出来,只需要根据priceCode实例化不同的策略对象即可:

    1.1K30

    如何优雅的写好Pythonic代码?

    有的同学可能不明白这个词的意义,小编的理解就是用Python的写法写代码,而非是其它语言的通用的写法,写出Python的特点,写出Python的风格。...例如我们要求20以内的整除3的数的平方的列表,可以用如下代码实现: numbers = [] for x in xrange(20): if x % 3 == 0: numbers.append...6、迭代对象善用enumerate类 enumerate类接收两个参数,其中一个是可以迭代的对象,另外一个是开始的索引。...比如,我们想要打印一个列表的索引及其内容,可以用如下代码实现: cities = ['BeiJing', 'TianJin', 'JiNan', 'ShenZhen', 'WuHan'] index...在函数调用前打印时间函数名相关的信息,不使用装饰器可以用如下代码实现: from time import ctime def foo(): print('[%s] %s() is called

    1.1K20

    编写优雅代码的最佳实践

    Robert Martin曾说过"在代码阅读中说脏话的频率是衡量代码质量额唯一标准"。同时,代码的写法应当使别人理解它所需的时间最小化,也就是说我们写的代码是给人看的而不是给机器看的。...那么,如何编写优雅代码呢?可以从思想层面和具体技巧层面来优化代码,思想层面指的是遵循面向对象设计原则,本期介绍的是具体技巧。 1. 代码总是越短越好吗? assert((!...i,j,k,iter,it被用做索引或者循环迭代已成为业界规范了(i是index的缩写),例如: for(int i=0;i<100;i++){ for(int j=0;j用begin和end来表示包含/排除范围 begin表示包含,end表示排除,在Java中典型的例子就是String.substring() String s = "Hello world";...因此,我们可以用一个更加自我说明的名字,例如: void releaseRegistryHandle(registryKey key); 13.为代码中的瑕疵写注释 // TODO:采用更快算法或者当代码没有完成时

    1.6K200
    领券