摘要:这些场景,你是怎么写的代码?

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”相关推荐

  1. SpringBoot 三招组合拳,手把手教你打出优雅的后端接口

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 作者:RudeCrab 链接:suo.im/5YMt2A 一.前言 ...

  2. 项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:juejin.im/post/5e7ab0bae51d452 ...

  3. 项目实践:Spring Boot 三招组合拳,手把手教你打出优雅的后端接口

    前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...

  4. 前端封装接口弹出错误_项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口...

    前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...

  5. jsp中java代码无效_来杯咖啡,教你如何优雅的在java中统计代码块耗时

    推荐阅读: Sping源码+Redis+Nginx+MySQL等七篇实战技术文档,阿里大佬推荐 阿里内部:2020年全技术栈文档+PPT分享,(万粉总结,回馈粉丝) 在我们的实际开发中,多多少少会遇到 ...

  6. SpringBoot三招组合拳,手把手教你打出优雅的后端接口

    前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有什么 ...

  7. springboot项目启动后第一次接口慢_项目实践:SpringBoot三招组合拳,手把手教你打出优雅的后端接口...

    作者:RudeCrab 来自:掘金 原文链接:https://juejin.im/post/5e7ab0bae51d45271b749815 前言 一个后端接口大致分为四个部分组成:接口地址(url) ...

  8. springboot 控制台输出错误信息_SpringBoot 三招组合拳,手把手教你打出优雅的后端接口...

    Python实战社群 Java实战社群 长按识别下方二维码,按需求添加 扫码关注添加客服 进Python社群▲ 扫码关注添加客服 进Java社群▲ 作者丨RudeCrab 一.前言 一个后端接口大致分 ...

  9. springboot requestmapping 正则_SpringBoot三招组合拳,手把手教你打出优雅的后端接口...

    一.前言 一个后端接口大致分为四个部分组成:接口地址(url).接口请求方式(get.post等).请求数据(request).响应数据(response).如何构建这几个部分每个公司要求都不同,没有 ...

最新文章

  1. 解答关于学习前端的一些问题
  2. sql parser
  3. 学生电脑哪个牌子好_柳州304不锈钢学生饭盒哪个牌子好_家典美日用品
  4. adblock拦截iframe
  5. 表单和iframe的使用
  6. WebStorm 8.0.3下简单运行pomelo项目
  7. 图文:2010中国计算机网络安全年会启明星辰展台
  8. java常用序列化与反序列化方法
  9. 联想笔记本电脑安装完Ubuntu16.04出现搜索不到wifi的问题
  10. 网购心脏起搏器存在多达8000个程序漏洞
  11. 56个民族及民族代码的sql语句
  12. python drop用法_Python drop方法删除列之inplace参数实例
  13. matlab 画温度分布,matlab画温度分布图
  14. 研究生必备的文献翻译软件知云文献翻译替代品--Mac monterey
  15. 6级20170601
  16. 软考查缺补漏?这篇《软件知识产权基础知识考点整理》了解一下?
  17. 我的推荐系统入门经验~
  18. C++的atof()
  19. 正大国际:做期货交易的方法
  20. Apsara Clouder专项技能认证:实现调用API接口-API考试

热门文章

  1. Bootstrap3 工具提示插件的事件
  2. Bootstrap媒体对象列表
  3. Bootstrap 排版地址
  4. mysql5.7下载及详细安装教程_MySQL 5.7 下载及安装教程(详细)
  5. php 7.2.5_CentOS7下PHP5.5.38升级PHP7.2.2
  6. 加州大学欧文分校 计算机专业,加州大学欧文分校计算机科学排名第36(2020年TFE美国排名)...
  7. python的with as语句_python with (as)语句
  8. hive中一个好用的函数reflect
  9. Zookeeper日志文件事务日志数据快照
  10. commonJS — 数字操作(for Number)