if从入门到出轨

news2024/9/22 17:30:31

if从入门到出轨(java版本)

为什么会产生很多if分支

在我们的日常生活中,会遇到很多判断逻辑,屁如,如果你在2月14号,心情很好,那么就给女朋友买了个iPhone 14 Pro Max 1TB 银白色,如果你女朋友在2月14号没有收到您老人家的礼物,那么你可能睡沙发或者轨搓衣板,或者直接和其他帅哥好上了,亦或者直接给你抛个异常,带个绿帽表示表示.放在业务代码中,屁如,如果用户是普通员工,应该展示上面列表或者按钮,如果是超管又应该展示上面列表或者按钮.生活中业务中客观存在的逻辑,自然就会产生if分支,当然最终经过转换,都会走到0和1,就是数字电路中的高低电平,我们就不扯远了,简言之就是,if逻辑客观存在,所以写代码的时候始终要写这些逻辑,只是展现形式不一样罢了.

if分支是什么

学习一门新的语言往往是先学语法,比如像学如何定义变量,一些运算符,了解相关数据类型(什么类,对象,接口,枚举等杂七杂八的),和条件语句(if,switch case ),常用数据结构(map,集合,链表,树等),控制流程语句啊(for循环,迭代器,do while什么的),以及其他特性(反射,注解,线程等),我们写的业务代码,if条件语句几乎到处都是,并且看起来不太美观,审美疲劳,简言之,它好像什么都不是,但是又却不了.

常见解决if分支方案和if分支抽象模型

我们看其他老铁的代码时发现,人家喜欢用设计模式去优化,屁如策略模式,工厂模式和模板方法等,或者三木运算,或者JDK8的optional或者加强版(hutool的opt工具类,包含JDK16的新增方法)if数量太大的往往用map映射甚至数据库表配置等方案,感觉挺好的,这个是大多数老铁爱干的,然而一顿操作下来,难免还是有if 分支散布在不同的模式内部或者其他卡卡各各,所以我们为了让前面的方案再少一些if分支,参考函数式编程的理念(给参数执行操作),重新给if 分支抽象了一个分支模型出来

        if (布尔值或者异常){
        //  执行相关函数(业务逻辑,赋值,请求三方接口,打印日志,操作缓存或者数据库等等
        //  或者返回一个值
        //  发生或抛异常(比如老生常谈的空指针)
        }

if分支常见代码和改造示例

案例1
在这里插入图片描述
去if后
在这里插入图片描述
去掉if并使用方法应用
在这里插入图片描述
案例2
在这里插入图片描述
去掉if后
在这里插入图片描述

案例3
在这里插入图片描述
去掉if后
在这里插入图片描述

由于Kif和Hif是一个工具接口(由函数完成,不含有类方法的调用),其中和hutool的Opt类(暂时还缺少点方法)搭配使用更佳,90%以上的if条件语句是可以改造的,那剩下的目前感觉是java语法受限,暂时只能用原生if(如果有,记得告诉贤弟,3Q)
在这里插入图片描述
关于optional不足(只能判空,map传递对象不能操作原来的对象)在hutool的Opt类的到了一些解决,但是它需要传递一个对象,对于不需要传递的操作,暂时没有完全处理,也就是没有把if 的逻辑在里面一并处理,后面如果有,那么这个博客会更新(贤弟空了看能不能提个PR加进去,后面再说吧)
https://gitee.com/dromara/hutool/pulls/426

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/341589.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【Kafka】【十九】新消费组的消费offset规则

新消费组的消费offset规则 新消费组中的消费者在启动以后,默认会从当前分区的最后⼀条消息的offset1开始消费(消费新消息)。可以通过以下的设置,让新的消费者第⼀次从头开始消费。之后开始消费新消息(最后消费的位置的…

电脑分盘怎么合并?只需1分钟,轻松学会

有些小伙伴喜欢将电脑进行分盘,以此将文件放进不同的分盘进行管理。但有时候,电脑磁盘分盘过多,管理起来又会有些麻烦。将一些闲置的磁盘进行合并很有必要。电脑分盘怎么合并?下面就跟着小编一起来看看吧。 电脑分盘怎么合并&…

Java 变量和数据类型,超详细整理,适合新手入门

目录 一、什么是变量? 二、变量 变量值互换 三、基本数据类型 1、八种基本数据类型 2、布尔值 3、字符串 四、从控制台输入 一、什么是变量? 变量是一种存储值的容器,它可以在程序的不同部分之间共享;变量可以存储数字、字…

二维数组的定义

1. 概念二维数组就是一种数组的数组,其本质上还是一个一维数组,只是它的数据元素又是一个一维数组。如果你对这个概念想象不出来,给大家举个栗子,相信吸烟的同学一下子就会明白。一根烟 一个变量一包烟 20根烟 一维数组一条烟 …

TIA博途中DB数据块清零的具体方法示例

TIA博途中DB数据块清零的具体方法示例 TIA中数据块如何实现清零? 在TIA指令集内有多个移动指令可对DB块内数据进行清零处理。对于S7-1500 CPU或ET200SP CPU来说,可使用BLKMOV、FILL以及SCL的POKE_BLK指令。但是这些指令对DB块清零时,要求DB块必需为非优化DB。 对于优化的DB…

国内ChatGPT日趋成熟后,可以优先解决的几个日常小问题

现在ChatGPT的发展可谓如日中天,国内很多大的公司例如百度、京东等也开始拥抱新技术,推出自己的应用场景,但可以想象到的是,他们必定利用这个新技术在巩固自己的现有应用场景,比如某些客服,你都不用想&…

Android 进阶——Framework 核心之Binder 对象及其生命周期小结(四)

文章大纲引言一、Binder概述二、Binder 对象三、Binder 对象生命周期的管理1、Binder本地对象(BBinder)的生命周期管理2、Binder 实体对象(binder_node)生命周期的管理3、Binder 引用对象(binder_ref)生命周…

ChatGPT入门案例|商务智能对话客服(一)

ChatGPT是人工智能研究实验室OpenAI新推出的一种人工智能技术驱动的自然语言处理工具,使用了Transformer神经网络架构,也是GPT-3.5架构,这是一种用于处理序列数据的模型,拥有语言理解和文本生成能力,尤其是它会通过连接…

32个关于FPGA的学习网站

语言类学习网站 1、HDLbits 网站地址:https://hdlbits.01xz.net/wiki/Main_Page 在线作答、编译的学习Verilog的网站,题目很多,内容丰富。非常适合初学Verilog的人!!! 2、牛客网 网站地址:http…

2.12、进程互斥的软件实现方法

学习提示: 理解各个算法的思想、原理结合上小节学习的 “实现互斥的四个逻辑部分”,重点理解各算法在进入区、退出区都做了什么分析各算法存在的缺陷(结合 “实现互斥要遵循的四个原则” 进行分析) 1、单标志法 算法思想:两个进…

SonicWall:请立即修复SMA 1000 漏洞

近日,网络安全供应商SonicWall发布了关于安全移动访问 (SMA) 1000设备的三个安全漏洞的紧急报告,其中包括一个高威胁性的身份验证绕过漏洞。SonicWall指出,攻击者可以利用这些漏洞绕过授权,并可能破坏易受攻击的设备。 从报告中可…

Cow Acrobats ( 临项交换贪心 )

题目大意: N 头牛 , 每头牛有一个重量(Weight)和一个力量(Strenth) , N头牛进行排列 , 第 i 头牛的风险值为其上所有牛总重减去自身力量 , 问如何排列可以使最大风险值最小 , 求出这个最小的最大风险值&am…

Java JCP

Java JCP目录概述需求:设计思路参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better result,wait for change,challenge Survive. happy for hardess to solv…

GIS在地质灾害危险性评估与灾后重建中的实践技术应用及python机器学习灾害易发性评价模型建立与优化

地质灾害是指全球地壳自然地质演化过程中,由于地球内动力、外动力或者人为地质动力作用下导致的自然地质和人类的自然灾害突发事件。由于降水、地震等自然作用下,地质灾害在世界范围内频繁发生。我国除滑坡灾害外,还包括崩塌、泥石流、地面沉…

手动部署ECS线上数据库及使用

文章参考自手动部署MySQL数据库(CentOS 7) (aliyun.com)MySQL是一个关系型数据库管理系统,常用于LAMP和LNMP等网站场景中。本教程介绍如何在Linux系统ECS实例上安装、配置以及远程访问MySQL数据库。前提条件已创建一台ECS实例。具体操作&…

[ 常用工具篇 ] CobaltStrike(CS神器)基础(一) -- 安装及设置监听器详解

🍬 博主介绍 👨‍🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…

YOLO-V5轻松上手

之前介绍了YOLO-V1~V4版本各做了哪些事以及相较于之前版本的改进。有的人或许会想“直接学习最近版本的算法不好吗”,在我看来,每一个年代的版本/算法都凝聚着当年学术界的智慧,即便是它被淘汰了也依旧有值得思考的地方,或是可以使…

工业无线物联网解决方案中的缺陷可让攻击者深入访问OT网络

运营技术 (OT) 团队通常通过无线和蜂窝解决方案将工业控制系统 (ICS) 连接到远程控制和监控中心,这些解决方案有时带有供应商运行的基于云的管理界面。 这些连接解决方案,也称为工业无线物联网设备,增加了 OT 网络的攻击面,并且可…

CentOS8基础篇6:文件属性的读取和修改

一、文件属性 每一行代表对应文件或目录的详细信息。从左到右具体的含义是文件属性、文件数、拥有者、所属的组、文件大小、建立月份、建立日期、建立年份或时间、以及文件名。其中“建立年份或时间”字段,如果文件是今年建立的,则显示具体时间&#xf…

文献阅读笔记 # GraphCodeBERT: Pre-training Code Representations with Data Flow

《GraphCodeBERT: Pre-training Code Representations with Data Flow》ICLR 2021 (TH-CPL A会,公认顶会,但未上 CCF 榜)作者部分与 CodeBERT 重叠,主要来自 MSRA Intern 和 MSRA 研究员,学生来自国内多个顶尖高校。资源&#xff…