首页 新闻 会员 周边

if-else代码健壮性问题

0
悬赏园豆:20 [已解决问题] 解决于 2020-10-16 11:21

比如说有一个数组 arr = [1,2,3,4,5,6]

for(let i =0;i<arr.length;i++) {
if( arr[i] === 7 ) {
//todo
}
}
//加一个else
for(let i =0;i<arr.length;i++) {
if( arr[i] === 7 ) {
//todo
} else {
return true;
}
}
比如这种情况,当我所有的条件都不符合时,下面加了else代码是否比上面的要稍微好一些,还是说上面不使用else代码就行,或者说各位大佬有好的写法分享一下。

纯海之蓝的主页 纯海之蓝 | 初学一级 | 园豆:132
提问于:2020-10-15 10:09
< >
分享
最佳答案
0

教材中都说一个方法一个return比较好,我觉得编写教材的人可能没什么工作经验,如果一个函数有很多行代码,多个return会看花眼,但是如果行数不是太多(或者是行数很多,但是多个return前面的代码都类似),多个return看起来很舒服,如:

def any7(array):
    for e in array:
        if e == 7:
            return true
    return false

比较一下:

def any7(array):
    have7 = false
    for e in array:
        if e == 7:
            have7 = true
            break
    return have7
收获园豆:20
会长 | 专家六级 |园豆:12407 | 2020-10-15 10:24

我是就這個案例討論嘛,實際應用上當然是視情況靈活變化的好啊

RosonJ | 园豆:4910 (老鸟四级) | 2020-10-15 10:27

@RosonJ:对的,我也改改我的答案

会长 | 园豆:12407 (专家六级) | 2020-10-15 10:31

@会长:
你的按理降return 放在if 中,這個寫法確實精簡,省去執行後面代碼工
但我覺得return 放在if 跟放在else 裡差別挺大的
if 中你可以清楚知道某個情境下會觸發
else 則是不符合某個情境時觸發
這就影響到除錯時的效率

RosonJ | 园豆:4910 (老鸟四级) | 2020-10-15 10:36

@RosonJ: 是的,哈哈,编程也是艺术活儿,也可以悟道

会长 | 园豆:12407 (专家六级) | 2020-10-15 11:21
其他回答(3)
0

我會認為return在for迴圈外較好
單一回傳點更容易閱讀

RosonJ | 园豆:4910 (老鸟四级) | 2020-10-15 10:14
0

除了7这个条件,其他条件你不做操作的话是可以不用写的

墨_鱼 | 园豆:595 (小虾三级) | 2020-10-15 10:33
1

不用加else,要是不想进行之后的步骤可以在if内加个continue;

甚至确定只有一次7的话还可以if内break;

文争青 | 园豆:259 (菜鸟二级) | 2020-10-15 14:39
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册