iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >优化if-else的方案有哪些
  • 237
分享到

优化if-else的方案有哪些

2023-06-16 13:06:28 237人浏览 薄情痞子
摘要

本篇内容主要讲解“优化if-else的方案有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“优化if-else的方案有哪些”吧!优化方案 1:提前 return,去除不必要的 else如果 i

本篇内容主要讲解“优化if-else的方案有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“优化if-else的方案有哪些”吧!

优化if-else的方案有哪些

优化方案 1:提前 return,去除不必要的 else

如果 if-else 代码块包含 return 语句,可以考虑通过提前 return,把多余 else 干掉,使代码更加优雅。

优化前:

if(condition){      //doSomething  }else{      return ;  }

优化后:

if(!condition){      return ;  }  //doSomething

优化方案 2:使用条件三目运算符

使用条件三目运算符可以简化某些 if-else,使代码更加简洁,更具有可读性。

优化前:

int  price ;  if(condition){      price = 80;  }else{      price = 100;  }

优化后:

int price = condition?80:100;

优化方案 3:使用枚举

在某些时候,使用枚举也可以优化 if-else 逻辑分支,按个人理解,它也可以看作一种表驱动方法。

优化前:

String OrderStatusDes;  if(orderStatus==0){     OrderStatusDes ="订单未支付";  }else if(OrderStatus==1){      OrderStatusDes ="订单已支付";  }else if(OrderStatus==2){     OrderStatusDes ="已发货";   }  ...

优化后:(先定义一个枚举)

public enum OrderStatusEnum {      UN_PaiD(0,"订单未支付"),PAIDED(1,"订单已支付"),SENDED(2,"已发货"),;      private int index;      private String desc;      public int getIndex() {          return index;      }      public String getDesc() {          return desc;      }      OrderStatusEnum(int index, String desc){          this.index = index;          this.desc =desc;      }      OrderStatusEnum of(int orderStatus) {          for (OrderStatusEnum temp : OrderStatusEnum.values()) {              if (temp.getIndex() == orderStatus) {                  return temp;              }          }          return null;      }  }

有了枚举之后,以上 if-else 逻辑分支,可以优化为一行代码:

String OrderStatusDes = OrderStatusEnum.0f(orderStatus).getDesc();

优化方案 4:合并条件表达式

如果有一系列条件返回一样的结果,可以将它们合并为一个条件表达式,让逻辑更加清晰。

优化前:

double getVipDiscount() {          if(age<18){              return 0.8;          }          if("深圳".equals(city)){              return 0.8;          }          if(isStudent){              return 0.8;         }          //do somethig      }

优化后:

double getVipDiscount(){         if(age<18|| "深圳".equals(city)||isStudent){             return 0.8;         }         //doSomthing     }

优化方案 5:使用 Optional

有时候 if-else 比较多,是因为非空判断导致的,这时候你可以使用 java8 的 Optional 进行优化。

优化前:

String str = "jay@huaxiao";  if (str != null) {      System.out.println(str);  } else {      System.out.println("Null");  }

优化后:

Optional<String> strOptional = Optional.of("jay@huaxiao");  strOptional.ifPresentOrElse(System.out::println, () -> System.out.println("Null"));

优化方案 6:表驱动法

表驱动法,又称之为表驱动、表驱动方法。表驱动方法是一种使你可以在表中查找信息,而不必用很多的逻辑语句(if 或 case)来把它们找出来的方法。

以下的 demo,把 map 抽象成表,在 map 中查找信息,而省去不必要的逻辑语句。

优化前:

if (param.equals(value1)) {      doAction1(someParams);  } else if (param.equals(value2)) {      doAction2(someParams);  } else if (param.equals(value3)) {      doAction3(someParams);  }  // ...

优化后:

Map<?, Function<?> action> actionMappings = new HashMap<>(); // 这里泛型 ? 是为方便演示,实际可替换为你需要的类型  // 初始化  actionMappings.put(value1, (someParams) -> { doAction1(someParams)});  actionMappings.put(value2, (someParams) -> { doAction2(someParams)});  actionMappings.put(value3, (someParams) -> { doAction3(someParams)});  // 省略多余逻辑语句  actionMappings.get(param).apply(someParams);

优化方案 7:优化逻辑结构,让正常流程走主干

优化前:

public double getAdjustedCapital(){      if(_capital <= 0.0 ){          return 0.0;      }      if(_intRate > 0 && _duration >0){          return (_income / _duration) *ADJ_FACTOR;      }      return 0.0; }

优化后:

public double getAdjustedCapital(){      if(_capital <= 0.0 ){          return 0.0;      }      if(_intRate <= 0 || _duration <= 0){          return 0.0;      }      return (_income / _duration) *ADJ_FACTOR;  }

将条件反转使异常情况先退出,让正常流程维持在主干流程,可以让代码结构更加清晰。

优化方案 8:策略模式+工厂方法消除 if else

假设需求为,根据不同勋章类型,处理相对应的勋章服务,优化前有以下代码: 

String medalType = "guest";      if ("guest".equals(medalType)) {          System.out.println("嘉宾勋章");       } else if ("vip".equals(medalType)) {          System.out.println("会员勋章");      } else if ("guard".equals(medalType)) {          System.out.println("展示守护勋章");      }      ...

首先,我们把每个条件逻辑代码块,抽象成一个公共的接口,可以得到以下代码:

//勋章接口  public interface IMedalService {      void showMedal();  }

我们根据每个逻辑条件,定义相对应的策略实现类,可得以下代码:

//守护勋章策略实现类  public class GuardMedalServiceImpl implements IMedalService {      @Override      public void showMedal() {          System.out.println("展示守护勋章");      }  }  //嘉宾勋章策略实现类  public class GuestMedalServiceImpl implements IMedalService {      @Override      public void showMedal() {          System.out.println("嘉宾勋章");      }  }  //VIP勋章策略实现类  public class VipMedalServiceImpl implements IMedalService {      @Override      public void showMedal() {          System.out.println("会员勋章");      }  }

接下来,我们再定义策略工厂类,用来管理这些勋章实现策略类,如下:

//勋章服务工产类  public class MedalServicesFactory {      private static final Map<String, IMedalService> map = new HashMap<>();      static {          map.put("guard", new GuardMedalServiceImpl());          map.put("vip", new VipMedalServiceImpl());          map.put("guest", new GuestMedalServiceImpl());      }      public static IMedalService getMedalService(String medalType) {          return map.get(medalType);      }  }

使用了策略+工厂模式之后,代码变得简洁多了,如下:

public class Test {      public static void main(String[] args) {          String medalType = "guest";          IMedalService medalService = MedalServicesFactory.getMedalService(medalType);          medalService.showMedal();      }  }

到此,相信大家对“优化if-else的方案有哪些”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

--结束END--

本文标题: 优化if-else的方案有哪些

本文链接: https://www.lsjlt.com/news/283737.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • 优化if-else的方案有哪些
    本篇内容主要讲解“优化if-else的方案有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“优化if-else的方案有哪些”吧!优化方案 1:提前 return,去除不必要的 else如果 i...
    99+
    2023-06-16
  • 有哪些替换if-else的方法
    这篇文章主要介绍“有哪些替换if-else的方法”,在日常操作中,相信很多人在有哪些替换if-else的方法问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”有哪些替换if-el...
    99+
    2024-04-02
  • 消除if...else的方法有哪些
    这篇文章主要介绍“消除if...else的方法有哪些”,在日常操作中,相信很多人在消除if...else的方法有哪些问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”消除if.....
    99+
    2024-04-02
  • 解决写if else烦恼方法有哪些
    本篇内容介绍了“解决写if else烦恼方法有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!if el...
    99+
    2024-04-02
  • SQL优化方案有哪些
    这篇文章主要讲解了“SQL优化方案有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SQL优化方案有哪些”吧!一、避免进行null判断 &nbs...
    99+
    2024-04-02
  • win7有哪些优化方案
    这篇“win7有哪些优化方案”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“win7有哪些优化方案”文章吧。一、优化启动项。打...
    99+
    2023-07-01
  • java中优化大量if...else...方法总结
    目录策略模式(Strategy Pattern)工厂模式(Factory Pattern)映射表(Map)数据驱动设计(Data-Driven Design) 总结策略模式...
    99+
    2023-03-19
    java优化大量if else java减少if else语句 多个ifelse优化
  • mongodb性能优化的方案有哪些
    MongoDB性能优化的方案有以下几种: 索引优化:通过合理地创建和使用索引来提高查询性能。可以根据查询频率和查询条件来选择合适...
    99+
    2023-10-21
    mongodb
  • Java优化if-else代码的实战记录
    目录前言 方案一: 数组 方案二:HashMap 由 key 获取 value 由 value 获取 key 解决方案三:枚举 总结 前言 开发系统一些状态,比如订单状态:数据库存...
    99+
    2024-04-02
  • 如何优化Java代码中大量的if/else
    这篇文章主要介绍了如何优化Java代码中大量的if/else的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇如何优化Java代码中大量的if/else文章都会有所收获,下面我们一起来看看吧。观点一(灵剑)前期迭代...
    99+
    2023-07-05
  • 衡阳网站优化的方案有哪些
    1.关键词优化:通过对网站关键词的研究和分析,选择合适的关键词进行优化,提高网站排名。2.内容优化:通过优化网站内容,增加网站的质量...
    99+
    2023-06-10
    衡阳网站优化
  • 基于Vue中SEO优化的方案有哪些
    这篇文章将为大家详细讲解有关基于Vue中SEO优化的方案有哪些,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。前言:众所周知,Vue SPA单页面应用对SEO不友好,当然也...
    99+
    2024-04-02
  • 数据库性能优化有哪些方案
    了解数据库性能优化有哪些方案?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧!关系型数据库在互联网项目中应用极为广泛,今天小编...
    99+
    2024-04-02
  • 西安建站方案及优化方法有哪些
    西安建站方案:1.选择一个优秀的CMS系统,如WordPress、Drupal、Joomla等。2.选择一个优秀的主题模板,可以根据...
    99+
    2023-06-13
    西安建站
  • 一招教你优化Java代码中大量的if/else
    目录观点一(灵剑)1. 提前return2. 策略模式2.1 多态2.2 枚举3. 学会使用 Optional4. 数组小技巧观点二(IT技术控)观点一(灵剑) 前期迭代懒得优化,来...
    99+
    2023-03-24
    Java优化if else Java if else
  • 浅谈Java编程之if-else的优化技巧总结
    一、使用策略枚举来优化if-else 看到网上蛮多人推荐使用策略模式来优化if-else,但我总觉得,搞一堆策略类来优化大批量if-else,虽然想法很好,但无意之中很可能又会创造出...
    99+
    2024-04-02
  • 云服务器网络优化方案有哪些
    使用VPN:VPN可以加密用户之间的通信,使得数据传输更加安全可靠。云服务器也可以使用VPN服务来加密用户数据的传输,以保障数据的安全性。 选择合适的路由协议:不同的云服务器提供商会采用不同的路由协议,如Round-Robin、Cloud...
    99+
    2023-10-27
    服务器 方案 有哪些
  • 云服务器成本优化方案有哪些
    云服务器成本优化方案主要集中在以下几个方面: 服务器资源利用率优化 云服务器是一种虚拟化的服务器,能够同时提供更快的数据处理和计算能力。为了提高服务器资源利用率,可以通过监控和优化服务器的硬件资源来减少服务器的空闲时间。例如,可以优化...
    99+
    2023-10-27
    成本 服务器 方案
  • 云服务器成本优化方案有哪些方面
    一、硬件配置 云服务器的硬件配置对成本优化具有非常重要的影响。一般来说,云服务器需要支持高速的网络连接和大量的存储空间,因此需要选择高性能的硬件设备。以下是一些云服务器的硬件配置推荐: CPU:云服务器的CPU是决定服务器性能的关键因素...
    99+
    2023-10-28
    成本 服务器 方案
  • 有哪些优化MySQL的方法
    这篇文章给大家分享的是有关有哪些优化MySQL的方法的内容。小编觉得挺实用的,因此分享给大家做个参考。一起跟随小编过来看看吧。MySQL优化1.优化索引、SQL语句、分析慢查询;2.设计表的时候严格按照数据...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作