目录
1.完全不必要的Else块" >1.完全不必要的Else块
2.价值分配" >2.价值分配
3.前提条件检查" >3.前提条件检查
4.将If-Else转换为字典—完全避免If-Else" >4.将If-Else转换为字典—完全避免If-Else
5.扩展应用程序—完全避免使用If-Else" >5.扩展应用程序—完全避免使用If-Else
首页 Java java教程 我们公司如何把项目中的2000个if-else彻底干掉的?

我们公司如何把项目中的2000个if-else彻底干掉的?

Jul 26, 2023 pm 04:29 PM
if-else


我们公司如何把项目中的2000个if-else彻底干掉的?

设计更好的软件,替换If-Else的5种方法。入门到高级示例

让我直接说这句话:If-Else通常是一个糟糕的选择。

它导致设计复杂,代码可读性差,并且可能导致重构困难。

但是,If-Else已成为事实上的代码分支解决方案,这确实是有道理的。这是向所有有抱负的开发人员讲授的第一件事。不幸的是,许多开发人员从来没有前进到更合适的分支策略。

有些人的口头禅是:If-Else是一把锤子,一切都是钉子。

无法区分何时使用更合适的方法是区分大三学生和大三学生的原因之一。

我将向您展示一些技巧和模式,这些技巧和模式将终结这种可怕的做法。

每个示例的难度都会增加。

1.完全不必要的Else块

这也许是那些初级开发人员最负罪的之一。下面的示例很好地说明了当您被认为If-Else很棒时会发生什么。

我们公司如何把项目中的2000个if-else彻底干掉的?

只需删除else`块即可简化此过程。

我们公司如何把项目中的2000个if-else彻底干掉的?

看起来更专业吧?

您会经常发现,实际上根本不需要其他块。像在这种情况下一样,您想要在满足特定条件的情况下执行某些操作并立即返回。

2.价值分配

如果您要根据提供的某些输入为变量分配新值,请停止If-Else废话-一种更具可读性的方法。

我们公司如何把项目中的2000个if-else彻底干掉的?

尽管很简单,但它却很糟糕。首先,If-Else很容易在这里被开关取代。但是,我们可以通过完全删除else来进一步简化此代码。

我们公司如何把项目中的2000个if-else彻底干掉的?

如果不使用else,则我们将剩下干净的可读代码。请注意,我也将样式更改为快速返回而不是单返回语句-如果已经找到正确的值,继续测试一个值根本没有意义。


3.前提条件检查

通常,我发现,如果方法提供了无效的值,则继续执行是没有意义的。

假设我们从以前就有了DefineGender方法,要求提供的输入值必须始终为0或1。

我们公司如何把项目中的2000个if-else彻底干掉的?

在没有价值验证的情况下执行该方法没有任何意义。因此,在允许方法继续执行之前,我们需要检查一些先决条件。

应用保护子句防御性编码技术,您将检查方法的输入值,然后继续执行方法。

我们公司如何把项目中的2000个if-else彻底干掉的?

至此,我们确保仅在值落在预期范围内时才执行主逻辑。

现在,IF也已被三元代替,因为不再需要在结尾处默认返回"未知"。

4.将If-Else转换为字典—完全避免If-Else

假设您需要执行一些操作,这些操作将根据某些条件进行选择,我们知道以后必须添加更多操作。

我们公司如何把项目中的2000个if-else彻底干掉的?

也许有人倾向于使用久经考验的If-Else。如果添加新操作,则只需简单地添加其他内容即可。很简单 但是,就维护而言,这种方法不是一个好的设计。

知道我们以后需要添加新的操作后,我们可以将If-Else重构为字典。

我们公司如何把项目中的2000个if-else彻底干掉的?

可读性已大大提高,并且可以更轻松地推断出该代码。

注意,仅出于说明目的将字典放置在方法内部。您可能希望从其他地方提供它。

5.扩展应用程序—完全避免使用If-Else

这是一个稍微高级的示例。

通过用对象替换它们,知道何时甚至完全消除If。

通常,您会发现自己不得不扩展应用程序的某些部分。作为初级开发人员,您可能会倾向于通过添加额外的If-Else(即else-if)语句来做到这一点。

举这个说明性的例子。在这里,我们需要将Order实例显示为字符串。首先,我们只有两种字符串表示形式:JSON和纯文本。在此阶段使用If-Else并不是什么大问题,如果我们可以轻松替换其他,只要如前所述即可。

我们公司如何把项目中的2000个if-else彻底干掉的?

知道我们需要扩展应用程序的这一部分,这种方法绝对是不可接受的。

上面的代码不仅违反了"打开/关闭"原则,而且阅读得不好,还会引起可维护性方面的麻烦。

正确的方法是遵循SOLID原则的方法-我们通过实施动态类型发现过程(在本例中为策略模式)来做到这一点。

重构这个混乱的过程的过程如下:

· 使用公共接口将每个分支提取到单独的策略类中

· 动态查找实现通用接口的所有类

· 根据输入决定执行哪种策略

替换上面示例的代码如下所示。是的,这是更多代码的方式。它要求您了解类型发现的工作原理。但是动态扩展应用程序是一个高级主题。

我只显示将替换If-Else示例的确切部分。如果要查看所有涉及的对象,请查看此要点。

我们公司如何把项目中的2000个if-else彻底干掉的?

让我们快速浏览一下代码。

方法签名保持不变,因为调用者不需要了解我们的重构。

首先,获取实现通用接口IOrderOutputStrategy的程序集中的所有类型。然后,我们建立一个字典,格式化程序的displayName的名称为key,类型为value。

然后从字典中选择格式化程序类型,然后尝试实例化策略对象。

最后,调用策略对象的ConvertOrderToString。

以上是我们公司如何把项目中的2000个if-else彻底干掉的?的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.聊天命令以及如何使用它们
1 个月前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

我们公司如何把项目中的2000个if-else彻底干掉的? 我们公司如何把项目中的2000个if-else彻底干掉的? Jul 26, 2023 pm 04:29 PM

首先,获取实现通用接口IOrderOutputStrategy的程序集中的所有类型。然后,我们建立一个字典,格式化程序的displayName的名称为key,类型为value。然后从字典中选择格式化程序类型,然后尝试实例化策略对象。

Java怎么优雅地书写if-else Java怎么优雅地书写if-else Apr 29, 2023 pm 10:04 PM

1.switchswitch方法针对枚举值处理有不错的效果,比如针对不同的订单状态时要做不同的处理,因为状态值有限,这时我们就可以直接使用switch来针对不同状态做不同的处理:原语句publicvoidbefore(Integerstatus){if(status==1){System.out.println("订单未接单");}elseif(status==2){System.out.println("订单未发货");}elseif(status==3

Go 语言基础 - if-else Go 语言基础 - if-else Jul 24, 2023 pm 03:38 PM

if是一个具有布尔条件的语句,如果该条件的计算结果为true,将会执行if后面大括号里的代码,如果结果为false,则会执行else后大括号里的代码。

java如何使用三目运算符来优化if-else java如何使用三目运算符来优化if-else May 02, 2023 pm 11:34 PM

使用三目运算符来优化if-else1、根据if-else条件来判断赋值的,如:Stringid="";if(flag){id="a";}else{id="b";}利用三目运算符,可以直接优化成一行代码:id=flag?"a":"b";2、利用if-else条件来判断调用方法,如:Setset1=newHashSet();Setset2=newHashSet();if(flag){set1.add(

在C/C++中同时执行if和else语句 在C/C++中同时执行if和else语句 Sep 05, 2023 pm 02:29 PM

在本节中,我们将了解如何在C或C++代码中同时执行if和else部分。这个解决方案有点棘手。当if和else相继执行时,就像执行不存在if-else的语句一样。但在这里我们将看看它们是否存在如何依次执行它们。示例代码#include<iostream>usingnamespacestd;intmain(){  intx=10;  if(x>5) {  &

Python中的常见流程控制结构有哪些? Python中的常见流程控制结构有哪些? Jan 20, 2024 am 08:17 AM

Python中常见的流程控制结构有哪几种?在Python中,流程控制结构是用来决定程序的执行顺序的重要工具。它们允许我们根据不同的条件执行不同的代码块,或者重复执行一段代码。下面将介绍Python中常见的流程控制结构,并提供相应的代码示例。条件语句(if-else):条件语句允许我们根据不同的条件执行不同的代码块。它的基本语法是:if条件1:#当条件

技巧分享:减少if-else使用,增加代码的可读性! 技巧分享:减少if-else使用,增加代码的可读性! Oct 27, 2022 am 10:11 AM

本文并未有消灭或歧视 if else的意思,if else 的好用都知道,这里只是在某些特定场景为大家额外提供一种思路,增加我们代码的可读性。

一文教你实现JavaScript if分支优化 一文教你实现JavaScript if分支优化 Mar 14, 2023 pm 07:37 PM

1000个判断条件难道要写了1000个 if ?要怎么优化if分支语句?下面本篇文章就来带大家聊聊怎么实现分支优化,希望对大家有所帮助!

See all articles