热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

if条件很多时,怎样写比较好

1.if(xxx&&xxxx){}2if(xxx){if(xxx){}}当if括号的条件很多时,哪一种写法好一些
1.if(xxx && xxxx){
  
  }
2 if(xxx){
     if(xxx){
     }
   }

当if括号的条件很多时,哪一种写法好一些,为什么?

34 个解决方案

#1


怎么样多法
假设条件都是int型,可以用switch
假设判断条件比较复杂,并且判断次数比较多,可以考虑采用责任链模式

#2


如果有else 就用 第二种,没有else就用第一种

#3


引用 1 楼  的回复:
怎么样多法
假设条件都是int型,可以用switch
假设判断条件比较复杂,并且判断次数比较多,可以考虑采用责任链模式


责任链 +1

#4


规则引擎

#5


&&是短路与,在第一种里只要有一个为假,后面的就全不用判断了。所以第二种判断的次数当然要小于等于第一种了...哪一个好就不用说了吧

#6


switch 啊

#7


楼主,,果断换用switch

#8


引用 5 楼  的回复:
&&是短路与,在第一种里只要有一个为假,后面的就全不用判断了。所以第二种判断的次数当然要小于等于第一种了...哪一个好就不用说了吧

楼主写的第二种方式也是后面不用判断的,不满足第一种,直接不走下面了.
我还是推荐第一种写法,因为可读性更强,嵌套的条件语句很容易让代码阅读性下降一个层次,而且使用第一种方法,还可以把条件语句抽出来做一个单独的函数或者用一个名称良好的变量表示其意义.

#9


感觉这个应该根据你的条件以及要做的处理来决定

#10


switch ()
{
   case 1: 。。。。。。。。。
   break;
   case 2: 。。。。。。。。。
   break;
   case 3: 。。。。。。。。。
   break;
}

#11


1 switch支持数字和字符串了。
2 有时多个if是唯一的方法

#12


楼主可以看看,J道里面的文章(你还在用if else吗?)。关于多个if else语句,使用设计模式。
看适合你的运用场景吗?
http://www.jdon.com/artichect/ifelse.htm

#13


引用 1 楼  的回复:
怎么样多法
假设条件都是int型,可以用switch
假设判断条件比较复杂,并且判断次数比较多,可以考虑采用责任链模式


+1

#14


抽成单个的方法

#15


引用 8 楼  的回复:
引用 5 楼  的回复:

&&是短路与,在第一种里只要有一个为假,后面的就全不用判断了。所以第二种判断的次数当然要小于等于第一种了...哪一个好就不用说了吧

楼主写的第二种方式也是后面不用判断的,不满足第一种,直接不走下面了.
我还是推荐第一种写法,因为可读性更强,嵌套的条件语句很容易让代码阅读性下降一个层次,而且使用第一种方法,还可以把条件语句抽出……

8楼的兄弟!还是你细心,打眼看过去还以为if没有嵌套呢

#16


谢谢大家的回复,可能是我没表达清楚,我是想知道,下面两种情况,习惯应该怎样写,不考虑switch或者模式等替代方式。
1.if(条件1 && 条件2 ...){
     执行代码
  }
2 if(条件1){
    if(条件2){
      if(条件3){
          执行代码
      }
    }
  }

#17


当然是1

#18


如果考虑可读性,按逻辑先后即可
先分析了所有分支,再确定执行代码如何归类

#19


要是嵌套则现在最苛刻的条件,
不是嵌套考虑switch

#20


if条件多就用:
1.短路
2.switch(可用类型)

简便可用三目运算符。

#21


尽量少用if了商业代码中if的个数是有限制的!圈复杂度什么的!

#22


其实那一中写法并不是很重要,而是要看你到底需要那种写法。

#23


什么是责任链啊

#24


这俩写法其实是一样的,并不会冲突,因为你始终都是if,二第一种写法和下面两个写法唯一不同只是参数不同,第一个表示,既要1成立也要二成立,而你下面那两个并不能代替第一个,因为这三种情况都是分别存在的。

#25


要去学习一下if的责任链模式了...

#26


同意大多数观点 用switch

#27


JDK1.7  的switch支持string类型哦

#28


还是运用switch吧,比较方便

#29


老大,面向对象编程尽量少用if和switch,用状态模式和策略模式替代把。

还有只是if条件比较复杂,建议重构出一个方法,这样代码清晰得多。比如if(xx && xxx && xxxx)改成if(not_fine(...))

#30


switch 和 if是面向过程的编程方法,当你要维护代码的时候 你就知道设计模式的强大之处啦

#31


反对上面的switch和if,深点说是用设计模式取代他们,浅点说就是用不同的对象来封装不同的功能,不同功能分发给相应的专门对象来处理,这样可以省掉if,比如可以多用内部类,一两句说不清楚。好好去学习一下面向对象的编程

#32


引用 31 楼  的回复:
反对上面的switch和if,深点说是用设计模式取代他们,浅点说就是用不同的对象来封装不同的功能,不同功能分发给相应的专门对象来处理,这样可以省掉if,比如可以多用内部类,一两句说不清楚。好好去学习一下面向对象的编程

+1

#33


是我就果断switch

#34


推荐第一种方法

推荐阅读
  • 本文分享了一个关于在C#中使用异步代码的问题,作者在控制台中运行时代码正常工作,但在Windows窗体中却无法正常工作。作者尝试搜索局域网上的主机,但在窗体中计数器没有减少。文章提供了相关的代码和解决思路。 ... [详细]
  • 本文详细介绍了GetModuleFileName函数的用法,该函数可以用于获取当前模块所在的路径,方便进行文件操作和读取配置信息。文章通过示例代码和详细的解释,帮助读者理解和使用该函数。同时,还提供了相关的API函数声明和说明。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了数据库的存储结构及其重要性,强调了关系数据库范例中将逻辑存储与物理存储分开的必要性。通过逻辑结构和物理结构的分离,可以实现对物理存储的重新组织和数据库的迁移,而应用程序不会察觉到任何更改。文章还展示了Oracle数据库的逻辑结构和物理结构,并介绍了表空间的概念和作用。 ... [详细]
  • 本文讨论了如何优化解决hdu 1003 java题目的动态规划方法,通过分析加法规则和最大和的性质,提出了一种优化的思路。具体方法是,当从1加到n为负时,即sum(1,n)sum(n,s),可以继续加法计算。同时,还考虑了两种特殊情况:都是负数的情况和有0的情况。最后,通过使用Scanner类来获取输入数据。 ... [详细]
  • 本文主要解析了Open judge C16H问题中涉及到的Magical Balls的快速幂和逆元算法,并给出了问题的解析和解决方法。详细介绍了问题的背景和规则,并给出了相应的算法解析和实现步骤。通过本文的解析,读者可以更好地理解和解决Open judge C16H问题中的Magical Balls部分。 ... [详细]
  • 本文讨论了使用差分约束系统求解House Man跳跃问题的思路与方法。给定一组不同高度,要求从最低点跳跃到最高点,每次跳跃的距离不超过D,并且不能改变给定的顺序。通过建立差分约束系统,将问题转化为图的建立和查询距离的问题。文章详细介绍了建立约束条件的方法,并使用SPFA算法判环并输出结果。同时还讨论了建边方向和跳跃顺序的关系。 ... [详细]
  • 本文介绍了如何在给定的有序字符序列中插入新字符,并保持序列的有序性。通过示例代码演示了插入过程,以及插入后的字符序列。 ... [详细]
  • Python正则表达式学习记录及常用方法
    本文记录了学习Python正则表达式的过程,介绍了re模块的常用方法re.search,并解释了rawstring的作用。正则表达式是一种方便检查字符串匹配模式的工具,通过本文的学习可以掌握Python中使用正则表达式的基本方法。 ... [详细]
  • Go Cobra命令行工具入门教程
    本文介绍了Go语言实现的命令行工具Cobra的基本概念、安装方法和入门实践。Cobra被广泛应用于各种项目中,如Kubernetes、Hugo和Github CLI等。通过使用Cobra,我们可以快速创建命令行工具,适用于写测试脚本和各种服务的Admin CLI。文章还通过一个简单的demo演示了Cobra的使用方法。 ... [详细]
  • 开发笔记:实验7的文件读写操作
    本文介绍了使用C++的ofstream和ifstream类进行文件读写操作的方法,包括创建文件、写入文件和读取文件的过程。同时还介绍了如何判断文件是否成功打开和关闭文件的方法。通过本文的学习,读者可以了解如何在C++中进行文件读写操作。 ... [详细]
  • 本文讨论了在手机移动端如何使用HTML5和JavaScript实现视频上传并压缩视频质量,或者降低手机摄像头拍摄质量的问题。作者指出HTML5和JavaScript无法直接压缩视频,只能通过将视频传送到服务器端由后端进行压缩。对于控制相机拍摄质量,只有使用JAVA编写Android客户端才能实现压缩。此外,作者还解释了在交作业时使用zip格式压缩包导致CSS文件和图片音乐丢失的原因,并提供了解决方法。最后,作者还介绍了一个用于处理图片的类,可以实现图片剪裁处理和生成缩略图的功能。 ... [详细]
  • IOS开发之短信发送与拨打电话的方法详解
    本文详细介绍了在IOS开发中实现短信发送和拨打电话的两种方式,一种是使用系统底层发送,虽然无法自定义短信内容和返回原应用,但是简单方便;另一种是使用第三方框架发送,需要导入MessageUI头文件,并遵守MFMessageComposeViewControllerDelegate协议,可以实现自定义短信内容和返回原应用的功能。 ... [详细]
  • Java SE从入门到放弃(三)的逻辑运算符详解
    本文详细介绍了Java SE中的逻辑运算符,包括逻辑运算符的操作和运算结果,以及与运算符的不同之处。通过代码演示,展示了逻辑运算符的使用方法和注意事项。文章以Java SE从入门到放弃(三)为背景,对逻辑运算符进行了深入的解析。 ... [详细]
  • 本文介绍了PHP常量的定义和使用方法,包括常量的命名规则、大小写敏感性、全局范围和标量数据的限制。同时还提到了应尽量避免定义resource常量,并给出了使用define()函数定义常量的示例。 ... [详细]
author-avatar
黛滢陌陌乄
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有