代码中如何避免过多的if else

在Spring环境中使用注解实现策略模式,避免过多的if-else代码 1 适用场景 平时写代码,if else是经常用到的语法,是针对不同的条件,运行不同的代码。在条件分支不多的情况下,这肯定是绝佳的选择,但如果分支过多,需要写几十甚至上百的if-else,不仅可读性不好,也不利于维护。这时,可以用到策略模式。本篇文章介绍的策略模式不仅可以省去if-else的代码,还可以将不同的策略内容封装到不同的Class中,在调用不同的策略时也十分方便简洁。 2 实现思路 实现思路是这样的,将不同的策略的代码内容封装到不同的Class里面,并声明自... 阅读详情

在开发中 if else 实在是多啊
  刚敲完代码,看了下 又发现N多个 if else啊
  希望大家给个好的建议啊

--------

use pattern, such as chain of responsibility

--------

enum

--------

我是来接分的,不可避免的逻辑判断,该写的还得写

--------

楼上的。用枚举的话不是还得if判断枚举值的情况么?

这个看业务需求了。如果业务的条件本来就多。我觉得难免会多。

--------

1、能用条件三元运算符的时候尽量用,但是业务逻辑可能会看不清晰

2、能用switch的时候尽量用

3、多用if{ return; }...if{ return; }...结构,或者while(true) { if { break; }...if { break; }...break; }结构(用于不方便退出整个方法的时候,但有死循环风险,代码习惯好的可以用),分支条件清晰,多层嵌套if...else...最容易犯错误

4、尽量分拆方法,让if...else...里面只有一句方法调用,逻辑也清晰

目前采用的就这么多,楼主可以参考一下。

--------

枚举可以有自己的方法,而且每个方法的实现可以不同,当然枚举不是万能的,不过也能解决一部分问题

使用switch或者enum,如果项目很大或者涉及到系统的合理性来说,使用设计模式也是很不错的选择,比如说责任链设计模式:http://4ujava.javaeye.com/blog/547166

--------

逻辑重要,没有办法的事情 if()else if()

--------

是swing还是web哦....

--------

如果想把所有的if else逻辑都提取出来,可以考虑用规则引擎

iLog,drools这些就是来把复杂的业务逻辑通过配置文件的方式提取出来,以后改甚至加新的业务逻辑不用更改代码了,改配置文件即可

--------

不用if else的话就只能用if return……

--------

我知道的避免ifelse的方法:
第一种是表驱动法:就是一开始就把所有的可能的数据都存放起来
第二种是用状态/策略模式
具体采取什么办法,就是看你要实现的功能了....

--------

为什么不喜欢if-else呢。。。

一般的话,多用while 来代替if 语句,尤其是当有很多if 语句的时候

if语句相对while 语句来看,存在一定的缺陷..所以建议考虑多使用while语句.

--------

if else 很常用啊,为什么要不用if else呢? 总是要做布尔运算的么
如果说,因为if else 很多,可以考虑用 监听者 模式, 把逻辑判断放到若干个监听者里,每个监听者处理一种情况,有数据进来就给所有的监听者,直到有人处理为止

本质上还是要用if else

关键看你的目的了

--------

用swith

--------

用 a?b:c 的格式,功能相当于if-else,格式上简单一些,推荐~~

if

return

试试

--------

if
return

switch
case

--------

用switch,不过java的switch好像只支持int和char

还有可以用离散数学里的关系运算把条件化简或结合

--------

使用switch或者enum,如果项目很大或者涉及到系统的合理性来说,使用设计模式也是很不错的选择,比如说责任链设计模式:http://4ujava.javaeye.com/blog/547166
责任链设计模式是不是把if else封装起来了,不是太明白,呵呵,初学。还有头像很不错。

如果怕if else嵌套多了会混乱,除了用模式这些方法外,我觉得可以把条件里的逻辑写成一个个小的private方法,如下:

Java code
   
if (a) { doA(); } else if (b) { doB(); } else { doC(); } doA() {} doB() {} doC() {}



这样看上去思路会稍微清晰一点,希望对你有帮助。Good Luck!

--------

这个有可能吗?
没有If,这世界会怎么样?

--------

合理的业务规划,实在要用就用。何必计较这个

-------

合理的业务规划,实在要用就用。何必计较这个

有些人 比较 眼里 看不见这些沙子 啊
不过写代码就应该 追求 尽量的 短小精悍啊 
结构优美  

--------

use pattern, such as chain of responsibility


  嗯 正在苦学模式啊 

--------

就是看的有点烦啊
  if else if if else 感觉这样写代码和在学校还是一样的
  看起来就是不爽啊

--------

不用 if else 我可能就不会写程序了 

--------

以论坛帖子为例子,如ForumMessage是一个模型,但是实际中帖子分两种性质:主题贴(第一个根贴)和回帖(回以前帖子的帖子),这里有一个朴素的解决方案:
建立一个ForumMessage,然后在ForumMessage加入isTopic这样判断语句,注意,你这里一个简单属性的判断引入,可能导致你的程序其他地方到处存在if else 的判断。
  如果我们改用另外一种分析实现思路,以对象化概念看待,实际中有主题贴和回帖,就是两种对象,但是这两种对象大部分是一致的,因此,我将ForumMessage设为表达主题贴;然后创建一个继承ForumMessage的子类ForumMessageReply作为回帖,这样,我在程序地方,如Service中,我已经确定这个Model是回帖了,我就直接下溯为ForumMessageReply即可,这个有点类似向Collection放入对象和取出时的强制类型转换。通过这个手段我消灭了以后程序中if else的判断语句出现可能。
--------

如何是具體的值,可以用swith(){ case:
//.....
 break;}
代替

---------

将if else用在小地方还可以,如简单的数值判断;在实现业务功能时一般使用设计模式解决。如果你做了不少系统,很久没有使用if else了,那么说明你可能真正进入OO设计的境地了。

--------

纯属个人习惯问题,在写代码的时候,把IF ELSE 对齐就没这问题了

--------

曾经听人说过,如果你的代码中,有很多的if...else的话,说明你的代码面向对象不好!或许是认识肤浅吧,我还是认为if和else都是逻辑判断必须的!楼上有几位兄弟说的,用switch替换,个人和if一样的!没有什么本质的区别!

--------

该用的时候还是得用!~

--------

重构到状态模式。

--------

你可以贴段你的代码出来让大家给你优化下 实际上有些时候由于条件的重复判断的确会出现很多该死的if else组合 写的时候就那么写吧 当你写完的时候我希望你能换个角度 看看自己写的这段代码严谨不严谨

--------

在项目中是的少用点if else但是有时得用还是用点。逻辑问题的时候。但是可以使用设计模式试试规划下。最主要的是要结构清晰。

--------

曾经听人说过,如果你的代码中,有很多的if...else的话,说明你的代码面向对象不好!或许是认识肤浅吧,我还是认为if和else都是逻辑判断必须的!楼上有几位兄弟说的,用switch替换,个人和if一样的!没有什么本质的区别!


  是啊 代码写了几年了啊 工作2年了啊 可发现代码还是if else啊 看起来很不爽 啊
  气愤啊 大家有好的方法再说说吧 分可以再加的

--------

善于用return;
一些if语句可以不需要else。一些if语句 判断完成立,可直接返回,无需向下走。
其实if else 是别的语言无可替代的,你有时候还必须得用。
我记得switch case 好像只能用int类型作为参数的?
--------

善于用return;
一些if语句可以不需要else。一些if语句 判断完成立,可直接返回,无需向下走。
其实if else 是别的语言无可替代的,你有时候还必须得用。
我记得switch case 好像只能用int类型作为参数的?

  int 和 char
--------

能用switch的时候不用if...else啊,效率高些嘛!

--------

不建议使用过多的if else ,switch. 因为可扩展性差,而且难维护.

可以尝试用多态

--------

Java code
  
package com.csdn; interface Animal { void speak(); } class Dog implements Animal { @Override public void speak() { System.out.println( " dog speak. " ); } } class Cat implements Animal { @Override public void speak() { System.out.println( " cat speak. " ); } } class Pig implements Animal { @Override public void speak() { System.out.println( " pig speak. " ); } } public class NoIfElse { // 比方说现在有个需求, // 通过state状态来判断那种动物叫 // 0让狗叫,1让猫叫,2让猪叫 /** * 方法1 */ private void animalSpeak( int state) { Animal[] animals = { new Dog(), new Cat(), new Pig() }; animals[state].speak(); } /** * 方法2,没有用到Animal接口 */ private void animalSpeak2( int state) { if (state == 0 ) { new Dog().speak(); } if (state == 1 ) { new Cat().speak(); } if (state == 2 ) { new Pig().speak(); } } public static void main(String[] args) { NoIfElse t = new NoIfElse(); int state = 1 ; t.animalSpeak(state); t.animalSpeak2(state); } }



LZ比较下方法1和方法2

--------

条件判断无法避免的, 充其量只是换下形式而已.!
if else 无所谓.! 但是尽量不要嵌套, 嵌套多了把你自己都套晕了的
LS的说的if return是个比较好避免嵌套的解决方案!

--------

一定是业务逻辑的问题。!。。可能是业务逻辑设计的不够合理。。~!

--------

设计模式:
 switch 用Adapter


设计模式  

sap 新增科目表_SAP系统中四大科目表的总结 操作科目表定义-OB13 2国家科目表定义-OB13 3集团科目表定义-OB13 4合并科目表(ECCS)定义-CX10 4分配操作科目表到公司代码-OB62 5分配国家科目表到公司代码-OB62 6分配集团科目表到操作科目表-OB13 6分配集团科目表到合并科目表-CXNF 7Operation 8定义集团科目表的科目-FSP0 8定义国家科目表的科目-FSP0 8定义操作科目表的科目-FSP0... 阅读详情

相关推荐

STM32F407 CubeMX UART DMA高效解析BNO085九轴数据

本文详细介绍了如何在STM32F407平台上使用CubeMX配置UART和DMA高效解析BNO085九轴传感器数据。通过DMA循环接收机制实现低CPU占用的实时数据采集,并分享数据解析技巧、错误处理及实战调试经验,为嵌入式开发者提供完整解决方案。

o4p5q6r7s的博客 234

代码优化:如何避免大量if分支,提高代码可读性和可维护性?

分支优化在各种语言中都有不同的实现方式和应用场景,本篇通过JavaScript介绍了两种代码分支优化的思想,代码的实现非常简单,重点在于这种思想的应用。观点1:压根不需要多此一举去优化它,并且优化后的代码因为多创建了一个对象/数组,对对象/数组进行检索反而比单纯的if else还是废性能。观点2:分支优化后的代码可读性/可维护性更好,并且引入对象/数组所带来的性能问题在当今时代根本不值一提。你是什么观点呢?

欢迎来到我的前端博客!这里汇集了关于前端开发的最新技术、实用工具和经验分享。我将为你提供详细的教程、代码示例和实战案例,帮助你掌握Web开发的核心概念和技能。不论你是初学者还是有经验的开发者,这个博客都适合你。 3613

电源完整性之Cadence Sigrity Power SI_AC阻抗仿真

之前和大家分享过电源完整性之仿真设计原理链接: [link](https://blog.youkuaiyun.com/weixin_41808082/article/details/117065140?spm=1001.2014.3001.5501).今天接着上一篇文章总结一下电源AC阻抗的的仿真操作流程及一些simulation中的设置参数,用到的时候Cadence Sigrity 中的Power SI组件,下面开始享受仿真的快乐吧: 1.仿真模式选择与文件导入 选择Cadence Sigrity下的Power SI

刘小同学的博客 1万+

如何避免使用过多的 if else?

if else使用过多使得代码可读性差、代码混乱、复杂度高、影响开发效率、维护成本高,如何解决这些问题呢?

weixin_44545357的博客 1368

Mac本地部署OpenClaw:从零搭建企业级知识库AI助手

大语言模型(LLM)作为当前人工智能的核心技术,通过其强大的自然语言理解和生成能力,正在深刻改变信息交互方式。其原理是基于海量数据训练的深度神经网络,能够根据上下文预测并生成连贯文本。这一技术的核心价值在于,它能够作为智能中枢,理解和执行复杂指令,从而将通用AI能力转化为解决特定业务问题的生产力。在工程实践中,通过AI Agent框架(如OpenClaw)将LLM与外部工具和知识系统连接,是实现其价值的关键。这涉及到**本地部署**与**私有化**部署,以确保数据安全与成本可控。具体应用场景包括企业知识库问

weixin_33402252的博客 376

PlutoSDR驱动安装避坑指南:从设备管理器异常到MATLAB 2023b完美识别

本文是一份详细的PlutoSDR驱动安装与MATLAB 2023b集成排错指南。针对Windows系统下常见的设备管理器异常、驱动兼容性问题,提供了从旧驱动清理、手动指定驱动文件到USB连接稳定性排查的完整解决方案。重点阐述了如何通过离线安装硬件支持包,并利用MATLAB命令进行连接测试与射频信号验证,最终实现设备的完美识别与稳定调用。

weixin_29159441的博客 427

如何去掉代码中大量if-else之 多态

关于代码中如何去掉大量的if-else 常规代码开发中if...else是不可避免的,虽然 if...else 是必须的,但滥用 if...else 会对代码的可读性、可维护性造成很大伤害,进而危害到整个软件系统。现在软件开发领域出现了很多新技术、新概念,但 if...else 这种基本的程序形式并没有发生太大变化。使用好 if...else 不仅对于现在,而且对于将来,都是十分有意义的。今...

springdata_的博客 5455

vivado下ECO操作-不重新综合实现修改属性并生成.bit

ECO即engineer change order,即工程变更指令,可以对设计做局部小改动并只对改动部分重新布局布线并生成.bit。在一个工程动辄编译几个小时情况下,可以在调试中节省大量时间。比如我们在调试中,需要改变时钟占空比或者相位,需要改变寄存器初值等等,此时用ECO暂时改动,待验证后在重新编译无疑是最有效率的方法。 实现ECO通常有两种方式,一是通过vivado界面完成,另一种方法就是tcl脚本。所有的ECO操作都可以通过tcl操作完成,有的操作用vivado界面无法完成,只能通过tcl。以下主要

4656

减少该死的 if else 嵌套

转载自:https://www.jianshu.com/p/57c065b124c4    写在前面   不知大家有没遇到过像“横放着的金字塔”一样的if else嵌套: if (true) { if (true) { if (true) { if (true) { if (true) { ...

ZERO 655

R语言实战:非正态数据下的Scheirer–Ray–Hare检验全流程解析

本文详细解析了在R语言中执行Scheirer–Ray–Hare检验的全流程。当数据不满足正态分布假设时,该非参数检验是传统双因素方差分析的有效替代方案。文章从原理、R环境配置、数据准备、代码实现、结果解读到事后比较与可视化,提供了完整的实战指南,帮助研究者稳健地分析多因素实验设计中的主效应和交互效应。

cc789的博客 404

更多 LSTM 变种——应用于 CMAPSS 数据集

本文并模型介绍,只是把一些比较火的技术,像双向注意力机制,自注意力机制这样的比较火的内容,简单的和LSTM堆叠,结果发现效果都不如最基础的,这里作者将本人代码及实现结果,进行展示,给各位想更改LSTM的朋友一些。

2301_77491330的博客 1765

C++减少过多if判断的一种思路

有时候if判断会写很多,代码写很长 如果if判断的层次很简单,只是if-else这种结构,读起来不会觉得有多么困难,只是很长而已;麻烦的是有很多嵌套(当然这是可以优化的); 优化的好,其实并不会太影响阅读;但对于有强迫症的人,if写太多,心理就是觉得不舒服。 网上有很多利用设计模式的方法处理过多的if判断的的文章。只是要写很多类,构造函数什么的,麻烦! 利用C++中的function,...

唐麦片的专栏 7701

【部署】OpenClaw版本降级实操(含全量卸载)

本文详细介绍了OpenClaw工具的降级与卸载方法。主要内容包括:1)通过npm安装指定版本的核心命令及国内镜像加速方案;2)两种卸载路径:CLI工具存在时的简易一键卸载(含交互式与非交互式命令)和手动分步卸载流程;3)CLI已删除但服务仍在运行时,针对macOS(launchd)、Linux(systemd)和Windows(计划任务)系统的具体清理步骤。文章特别强调了卸载前备份的重要性,并提供了不同安装方式(常规安装与源码克隆)的额外说明,确保用户能彻底清理所有组件。

海兰 3171

java if else 过多_java编码中避免过多if-else的几种方法【附代码】

今天爱分享给大家带来java编码中避免过多if-else的几种方法【附代码】,希望能够帮助到大家。太多的if-else不太直观,难以维护。 以下面代码为例,展示几种替代if else的方法。String input = “three”;@Testpublic void testElse() {if ("one".equals(input)) {System.out.println("one");}...

weixin_35231383的博客 513

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

php uf else 分支过多,谈谈代码——如何避免写出糟糕if...else语句

在写代码的日常中,if...else语句是极为常见的.正因其常见性,很多同学在写代码的时候并不会去思考其在目前代码中的用法是否妥当.而随着项目的日渐发展,糟糕的if...else语句将会充斥在各处,让项目的可维护性急剧下降.故在这篇文章中,笔者想和大家谈谈如何避免写出糟糕if...else语句.由于脱密等原因.文章中的示例代码将会用一些开源软件的代码或者抽象过的生产代码作为示范.问题代码当我们看到...

weixin_39873177的博客 329

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

使用 config mapping 避免代码中 if-else 语句过多

此方法转自stackoverflow 当前代码为: if(eventType == XmlPullParser.START_TAG) { soapResponse= xpp.getName().toString(); if (soapResponse.equals("EditorialOffice")){ ...

拍死牛虻的尾巴 1648

【代码质量】-如何避免写过多的if-else语句,从青铜到钻石级码农是如何重构的?

前言:开篇先放一张大神写的代码,反正我看到这张图第一反应就是佩服(画质有点渣,不过就算是4K蓝光我也看不懂里面的逻辑) 如果在开发中写出这样一段代码,那么恭喜你,拥有铁饭碗了,连技术总监都拿你没办法,你走了这代码谁来维护? 玩笑归玩笑,那么到底该如何避免在写代码中出现大量的if-else以及控制If-else的层级数? 阿里巴巴的java技术开发手册其实已经给出了答案,我这里结合实际...

老汉健身的博客 1832

过多if-else分支的优化

有一些朋友说if-else过多的分支可以使用switch或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。 为什么要优化? 你没有看错。这是要放在第一条谈论的。 有许多人会说,叠起来一堆if-else分支,代码就不优雅了。可是,怎样去定义“优雅”的概念呢?再退一步说,即便不“优雅”,又有什么问题? 对于这样一段再普通不过的代码:

鸿雁归来的专栏 1681

java反射与ifelse_Java中避免过多if-else的几种方法

太多的if-else不太直观,难以维护。以下面代码为例,展示几种替代if else的方法。String input = "three";@Testpublic void testElse() {if ("one".equals(input)) {System.out.println("one");} else if ("two".equals(input)) {System.out.println...

weixin_39766910的博客 258

java if else string_9个小技巧让你的 if else看起来更优雅

if else 是我们写代码时,使用频率最高的关键词之一,然而有时过多的 if else 会让我们感到脑壳疼,例如下面这个伪代码:是不是很奔溃?虽然他是伪代码,并且看起来也很夸张,但在现实中,当我们无数次 review 别人代码时,都会发现类似的场景,那么我们本文就来详细聊聊,有没有什么方法可以让我们避免来写这么多的 if else 呢?我们本文提供了 9 种方法来解决掉那些“烦人”的 if el...

weixin_28990983的博客 516

【JavaScript】如何优雅的使用 if else

作为一个程序员在开发中if else判断在代码中是必不可少的,但是if else判断使用多了嵌套多了不利于代码维护,看起来也头疼难以理解,接下来以为大家介绍一下我是怎么避免过多冗余的if else嵌套的。

2301_79456272的博客 2074

python if elif else用法_python----if -- elif -- else 用法

Python之 if-elif-else有的时候,一个 if ... else ... 还不够用。比如,根据年龄的划分:条件1:18岁或以上:adult条件2:6岁或以上:teenager条件3:6岁以下:kid我们可以用一个 if age >= 18 判断是否符合条件1,如果不符合,再通过一个 if 判断 age >= 6 来判断是否符合条件2,否则,执行条件3:if age &gt...

weixin_39878760的博客 586

如何避免过多的if else

写项目的时候难免会遇见这种情况 方法一 let orderStatus = '' if (res.data.status == '1') { orderStatus = '待付款' } else if (res.data.status == '2') { orderStatus == '待发货' } else if (res.data.status == '3') { orderStatus == '已发货' } else if (res.data.status == '4') {

积极! 698

python多个if怎么优化_过多if-else分支的优化

我想谈一谈这个话题是因为我的上一篇博客在ITEye上有一些朋友回复,说if-else过多的分支可以使用switch或者责任链模式等等方式来优化。确实,这是一个小问题,不过我们还是可以整理一下这个小问题的重构方式。为什么要优化?你没有看错。这是要放在第一条谈论的。有许多人会说,叠起来一堆if-else分支,代码就不优雅了。可是,怎样去定义“优雅”的概念呢?再退一步说,即便不“优雅”,又有什么问题?对...

weixin_39786141的博客 5870
上一篇: JSP中getParameter和getAttribute区别
下一篇: 浅谈BeanNameUrlHandlerMapping
cpp_lzth
博客等级 码龄19年 125粉丝 63原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值