84669인 학습
152542인 학습
20005인 학습
5487인 학습
7821인 학습
359900인 학습
3350인 학습
180660인 학습
48569인 학습
18603인 학습
40936인 학습
1549인 학습
1183인 학습
32909인 학습
如题,在写代码的时候会遇到各种的判断情况,如果使用if语句的话,会使自己的代码变长而且也不易读。
请问大家在写代码的时候通过什么方法来减少if语句的使用呢?
ringa_lee
以下是我常用的一些if操作改写情况,看看是否对你有帮助。
if
传统switch改写
if(result>1 && result<10) { return 0 }elseif(result>10 && result<20){ return 1 }else{ return 10 } // 改动后 switch(true){ case (result>1 && result<10): return 0 case (result>10 && result<20): return 0 default: return 10 }
三元运算符替换
if(bool){ val = 1 }else{ val = 2 } // 改动后 val = bool ? 1 : 2
逻辑判断改写
if(bool){ val = test() } // 改动后 bool && (val = test()) if(!bool){ val = test() } // 改动后 bool || (val = test())
对象属性改写
if(result==1){ return 'one' }elseif(result=2){ return 'two' }elseif(result=3){ return 'three' }else{ return '' } // 改动后 result_info = {1:'one',2:'two',3:'three'} return result_info[result] ? result_info[result] : ''
函数化
短路判断(&& ||)
先处理特殊情况尽早return
三目运算符
switch
其他
个人经常用1和2
谢邀。前面已经回答的很好了。方法有很多,具体使用也应视业务而定。1.if多的情况下使用switch 代码美观。2.减少代码行数:
三目 condition ? expression1 : expression2; && result = expression1 && expression2 //如果expression1的计算结果为false,则result为expression1。否则result为expression2 || data = undefined || backup_data; //一般用于容错,简写if,请求出错,数据为undefined时,就去备用数据backup_data
3.很多时候业务原因是逃不了用if的,而且它也不错^_^。把代码逻辑简化就可以少if嵌套。至于通用的话,可以考虑设计模式以及函数。
三目运算符,switch都是不错的选择,本人认为,如果需要判断不是很多的话还是使用if即可。
可以试试策略模式来去if
如果使用if语句的话,会使自己的代码变长而且也不易读
这个描述是不太准确的。对稍微复杂一点的逻辑而言,if在可读性上我感觉是最好的选择。对于一般的简单判断逻辑,&&可以代替if。对于一般的简单if else语句或者多重嵌套但是简单的if else语句,可以用三目运算。你可以看看JQ的源码,里面用if的频率比&&和三目加起来都多。
另外补充下其他几位朋友提到的通过函数和对象的方式去掉if,针对这个我想说的是,这个本身就不是if的缺点,而是他本身就不该用if来做,就该用过函数或者对象的方式去解决。就好比你非要用铅笔刀削苹果,然后说不能很好的削苹果是铅笔刀的缺点一样。
出来吧!就决定是你了!三元运算符!
有时候if...else又臭又长是因为没有适当的引入异常处理。try...catch
上面讲了很多的写法,最常见的有三元表达式。我补充些我自己写单个判断时的例子: 1, var i= 5 ;if(i<6) return i; 2, var i= 5 ; i<6 && return i; 说白了有时我不是很喜欢写 { } 这个代码块符号。
如果使用if语句的话,会使自己的代码变长而且也不易读。
其实我有很多次在被code review的时候,被勒令把三元改成if,理由是三元太不易读了
以下是我常用的一些
if
操作改写情况,看看是否对你有帮助。传统switch改写
三元运算符替换
逻辑判断改写
对象属性改写
函数化
短路判断(&& ||)
先处理特殊情况尽早return
三目运算符
switch
其他
个人经常用1和2
谢邀。前面已经回答的很好了。方法有很多,具体使用也应视业务而定。
1.if多的情况下使用switch 代码美观。
2.减少代码行数:
3.很多时候业务原因是逃不了用if的,而且它也不错^_^。把代码逻辑简化就可以少if嵌套。至于通用的话,可以考虑设计模式以及函数。
三目运算符,switch都是不错的选择,本人认为,如果需要判断不是很多的话还是使用if即可。
可以试试策略模式来去
if
这个描述是不太准确的。对稍微复杂一点的逻辑而言,if在可读性上我感觉是最好的选择。对于一般的简单判断逻辑,&&可以代替if。对于一般的简单if else语句或者多重嵌套但是简单的if else语句,可以用三目运算。你可以看看JQ的源码,里面用if的频率比&&和三目加起来都多。
另外补充下其他几位朋友提到的通过函数和对象的方式去掉if,针对这个我想说的是,这个本身就不是if的缺点,而是他本身就不该用if来做,就该用过函数或者对象的方式去解决。就好比你非要用铅笔刀削苹果,然后说不能很好的削苹果是铅笔刀的缺点一样。
出来吧!就决定是你了!三元运算符!
有时候if...else又臭又长是因为没有适当的引入异常处理。
try...catch
上面讲了很多的写法,最常见的有三元表达式。我补充些我自己写单个判断时的例子: 1, var i= 5 ;if(i<6) return i; 2, var i= 5 ; i<6 && return i; 说白了有时我不是很喜欢写 { } 这个代码块符号。
其实我有很多次在被code review的时候,被勒令把三元改成if,理由是三元太不易读了