有时候只有一句话的判断的时候,不太想写 if,想用逻辑运算符代替,但是感觉这样可读性很差。大家能接受这种写法嘛?
a && success()
b || error()
有时候只有一句话的判断的时候,不太想写 if,想用逻辑运算符代替,但是感觉这样可读性很差。大家能接受这种写法嘛?
a && success()
b || error()
|
dot2017Jan 22, 2019
1
在你认为难读的地方加备注不就好了
|
|
oott123Jan 22, 2019 via Android
2
这有个术语叫短路求值。
不能接受。 |
|
frylkrttjJan 22, 2019
3
感觉这是神操作
|
|
rockyou12Jan 22, 2019
4
非常不好,一般读这种代码脑袋要转下弯,特别容易出 bug
|
|
jifenggJan 22, 2019
5
一般我写自己用的代码,喜欢这么写。
如果你的代码还要给别人看或者别人用,那不太推荐。再不然的话,多加点注释,有用的注释 |
|
6
可读性优先
|
|
AlisaDestinyJan 22, 2019
7
写 js 的话常用。
比如在调用回调函数的时候 cb && cb(data); 或者为了解决某些兼容性问题的时候 a = a || aa; |
|
TorpedoJan 22, 2019 via Android
8
js 里常规操作。。。
|
|
9
你这么写的话可读性就很差了。
有些语言可以这么写: send_email and show_success(xx) connect_db or show_error(xx) 原生英语语法,读起来就很舒服了。 |
|
registJan 22, 2019 via iPhone
10
Gentoo 的 ebuild 脚本,一直这么写
|
|
rabbbitJan 22, 2019
11
一般用来做判断加个注释应该没啥问题
要是这么写还不加注释估计会被打 num = (123.45 + 888) / 10 | 0 num & 1 && num-- |
|
12
|
|
mooncakejsJan 22, 2019
13
js 和 php 里用的很多,c/java 里很少见。
|
|
lucifer9Jan 22, 2019
14
喜欢这么用的话,投奔 Rust 吧
and_then, or_else 满足你 |
|
RqPS6rhmP3Nyn3TmJan 22, 2019 via iPhone
15
没有 lazy evaluation 就炸了
|
|
GeruzoniAnsasuJan 22, 2019
17
拿 c++来说,这种写法有个很严重的问题就是求值要先于运算符
https://zh.cppreference.com/w/cpp/language/eval_order 2) 任何运算符的运算数的值计算(但非副效应)先序于运算符结果的值计算(但非副效应)。 && 右边的 sucess()函数必定会先调用,得出结果后,才会进行&&比较,而如果 success 是个 void 类型,此处甚至无法编译,所以 C/JAVA 里不可能见到这种写法,语义上都无法成立 只在 shell 脚本里见过 [ xxx ] && do_sth |
|
nichijouJan 22, 2019
18
像 if else 本身是英语,其语义不需思考已经形成条件反射了
而这种写法在如果该语言很常见比如 Perl,因为用得多所以可以放心使用 但如果该写法在该语言不常见的话还是不要了,别人看了可能会懵一下 |
|
sosilverJan 22, 2019 via Android
19
@GeruzoniAnsasu 并不是,你看第六条。短路逻辑运算符类似 if/else。
|
|
GeruzoniAnsasuJan 22, 2019
20
@sosilver 试完发现我说错了
|
|
maomoJan 22, 2019
21
会不会被打取决于看代码的人喜不喜欢做逻辑题
|
|
jookrJan 22, 2019
22
我拍黄片经常这么写
``` !$var && $this->error('报错'); $insert['name'] = input('post.name/s') ?: $this->error('name 获取失败'); ``` |
|
U7Q5tLAex2FI0o0gJan 22, 2019
23
if (a) {
success(); } 可以说我今天写了 3000 行代码。 a && success() 只能说我今天写了 1000 行代码。 (狗头 |
|
arthas2234Jan 22, 2019
24
比较忙或者脑子不太清醒的时候,容易翻车
|
|
shyangsJan 22, 2019
25
JS 里常规操作
``` var locale = navigator.language || navigator.browserLanguage; ``` |
|
meiguo10086Jan 22, 2019
26
js 常见 不会被打。不过还是建议用 if 抱起来 多不了多少代码。但是很优雅可读性高。貌似很多大佬都建议包起来
|
|
grewerJan 22, 2019
27
我也 觉得是常规操作 习惯了之后 可读性不是问题 写得也快点..
|
|
28
JS 的常规操作,特别是空值检测和 JSX 里面条件分支
|
|
libookJan 22, 2019
29
可读性优先,不推荐这么写。
|