教你如何优雅的改写“if-else”
摘要:这些场景,你是怎么写的代码?
if-else,这是个再正常不过的coding习惯,当我们代码量小的时候用来做条件判断是再简单不过的了。但对于优秀程序员来说,这却不是好代码。
不信你往下看…
1. 卫语句提前return
假设有如下代码
通过对判断条件取反,代码在逻辑表达上会更加清晰
2. 使用Optional简化if判空
2.1 简化1级判空
假设有如下代码
使用Optional后
2.2 简化多级判空
假设有如下代码
使用Optional后
对于没有else的场景,使用ifPresent即可
3. 策略模式
假设有如下代码:
这就是不要根据不同的参数类型走不同的代码逻辑,这种场景很常见,他还会以switch-case的方式出现:
不同的代码逻辑就代表了不同的策略,我们可以通过如下几个方式改写。
3.1 多态
具体的策略对象可以放在一个Map中,优化后的实现类似如下
关于如何存放到Map中也两个可以参考的方式。
3.1.1 静态表
3.1.2 Spring托管下的动态注册
定义一个注册中心用于接受注册信息
将每个Strategy交由Spring管理,并在构造后注册
使用方式就变成了
3.2 枚举
采用多态会额外产生很多策略类,如果我们已经预先将petType定义成了枚举,就会发现可以把Strategy中的invoke()方法放到枚举中,从而完成了一种映射关系。
这样在调用时的代码就类似如下:
3.3 函数式简化策略
同样面对多态会额外产生很多策略类的问题,除了枚举我们还可以使用函数式的方式来改写,这里有个前提最好是策略的内容不会过于复杂,不然在代码的可读性上会比较差
同样我们会有一个map静态表,不过map里面存放的是lambda
使用方式则变成了
本文分享自华为云社区《改写if-else的几个思路》,原文作者:技术火炬手。
点击关注,第一时间了解华为云新鲜技术~
教你如何优雅的改写“if-else”相关推荐
- SpringBoot 三招组合拳,手把手教你打出优雅的后端接口
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:RudeCrab 链接:suo.im/5YMt2A 一.前言 ...
- 项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:juejin.im/post/5e7ab0bae51d452 ...
- 项目实践:Spring Boot 三招组合拳,手把手教你打出优雅的后端接口
前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...
- 前端封装接口弹出错误_项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口...
前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...
- jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时
推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...
- SpringBoot三招组合拳,手把手教你打出优雅的后端接口
前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...
- springboot项目启动后第一次接口慢_项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口...
作者:RudeCrab 来自:掘金 原文链接:https://juejin.im/post/5e7ab0bae51d45271b749815 前言 一个后端接口大致分为四个部分组成:接口地址(url) ...
- springboot 控制台输出错误信息_SpringBoot 三招组合拳,手把手教你打出优雅的后端接口...
Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨RudeCrab 一.前言 一个后端接口大致分 ...
- springboot requestmapping 正则_SpringBoot三招组合拳,手把手教你打出优雅的后端接口...
一.前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有 ...
最新文章
- 解答关于学习前端的一些问题
- sql parser
- 学生电脑哪个牌子好_柳州304不锈钢学生饭盒哪个牌子好_家典美日用品
- adblock拦截iframe
- 表单和iframe的使用
- WebStorm 8.0.3下简单运行pomelo项目
- 图文:2010中国计算机网络安全年会启明星辰展台
- java常用序列化与反序列化方法
- 联想笔记本电脑安装完Ubuntu16.04出现搜索不到wifi的问题
- 网购心脏起搏器存在多达8000个程序漏洞
- 56个民族及民族代码的sql语句
- python drop用法_Python drop方法删除列之inplace参数实例
- matlab 画温度分布,matlab画温度分布图
- 研究生必备的文献翻译软件知云文献翻译替代品--Mac monterey
- 6级20170601
- 软考查缺补漏?这篇《软件知识产权基础知识考点整理》了解一下?
- 我的推荐系统入门经验~
- C++的atof()
- 正大国际:做期货交易的方法
- Apsara Clouder专项技能认证:实现调用API接口-API考试
热门文章
- Bootstrap3 工具提示插件的事件
- Bootstrap媒体对象列表
- Bootstrap 排版地址
- mysql5.7下载及详细安装教程_MySQL 5.7 下载及安装教程(详细)
- php 7.2.5_CentOS7下PHP5.5.38升级PHP7.2.2
- 加州大学欧文分校 计算机专业,加州大学欧文分校计算机科学排名第36(2020年TFE美国排名)...
- python的with as语句_python with (as)语句
- hive中一个好用的函数reflect
- Zookeeper日志文件事务日志数据快照
- commonJS — 数字操作(for Number)