-
Notifications
You must be signed in to change notification settings - Fork 27
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
if的用法比较蛋疼 #61
Comments
本来只允许简单情况下后置if就是为了避免单行代码过于复杂。(问题是也许应该以警告代替直接parse错。) 一个关键字有多种用途是不可避免的,这个case里换个关键字只有更不好记。设计上优先考虑的是use cases的需求,其次是不容易出错。 |
不,这个就是多出来的事儿 如果能把if在表达式里的东西换成 三元运算符,那if整个就只有一个意思了 |
三元运算符
复杂度测量是一个一般特性。所有表达式都有可能写得过于复杂。此特性最好由lint提供。但jedi将一些coding style的控制直接内置到了语法中。
后置 if 并没有创造一个新的用途,只是在普通的 if condition then expression 之外提供了 expression if condition 的语法。perl/ruby/coffee都有后置if,连python都有,所以我不认为这有多大的记忆负担。 |
首先可读性是主观的,在js/php流行的公司用三元运算符比python式的 if then else更可读 后面两点是同一个问题,加了后置if就有新的规则要记忆:有复杂度测量,语法限制后置if只有在某些dom里可以用 省掉一个关键词用的位置就是省掉一个复杂度,而且这个复杂度省掉了也不会引起太多不便。就算不是记忆负担,但是在写的过程可以少一个选择,改的过程少一个可能的改动,读的时候少一个需要注意的点(尤其是没有代码高亮的时候) |
这个是考虑因素,所以大部分地方都考虑了和js和php的一致性。但是不可能因此就禁止所有不在js/php里的东西。比如 for...in 跟js(for...of)和php(foreach ... as)都不一样,但是其实for...in更符合大多数人的直觉。
php7加的是
jedi的parser是支持 |
比如
这一句是可以编过的
但是
就是编不过的
这个又是一个需要记忆的用法
jedi里if,else的用法本身也有三种,作为instruction,作为后置条件,作为表达式,同一个token在不同环境下承担不同职责是不好学,不好找,不好记的 (极端的例子)
另外在长远看来,if后置的条件判断一定会变长,而一般开发的习惯一定是把条件全塞进一个if里(coffeescript是个先例)
The text was updated successfully, but these errors were encountered: