只有我习惯写 if (true == file.exists()) 这样的代码吗?

2015-09-30 19:51:40 +08:00
 xiusedelang

我感觉这样代码看着有莫名的对称美感。虽然多打点字,但是看代码时逻辑更容易理解。
只有我这样觉得吗?

8066 次点击
所在节点    程序员
67 条回复
xmbaozi
2015-09-30 19:56:04 +08:00
file.exists() == true
怎么觉得这样更符合逻辑
lsmgeb89
2015-09-30 19:56:15 +08:00
if (file.exists())

if (!file.exists())
blacktulip
2015-09-30 19:57:53 +08:00
英语而论 if file exists 显然更流畅
render
2015-09-30 19:58:16 +08:00
这样写多此一举,没意义。
vietor
2015-09-30 19:58:37 +08:00
把缺点美化成优点。之前国内有些人写的编程类的书中推荐的方法、风格很多都是坑人的。
lsmgeb89
2015-09-30 19:59:16 +08:00
@xmbaozi 是防止少写一个等号,造成 bug 。所以写在左边,这样如果少写了,就会编译错误。它还有个名字叫 Yoda 表示法,见:
http://www.yinwang.org/blog-cn/2013/04/14/yoda-notation/
aprikyblue
2015-09-30 20:00:17 +08:00
多此一举,而且实在看不出 哪里逻辑更容易理解。。。

还是习惯这样
> if ( file.exists() )
jydeng
2015-09-30 20:01:05 +08:00
true 和 false 从来不写,都是 if(条件) 、 if(!条件)。
zenjayjay
2015-09-30 20:01:29 +08:00
true 写在前面是好的,不过语义化应该是“如果存在”,那个 true 就没必要写了吧。
echo1937
2015-09-30 20:03:30 +08:00
其实是你习惯了而已,就好比 “朱逸之” 这样的名字。
YuJianrong
2015-09-30 20:07:39 +08:00
Yoda 表示法现在来看毫无意义,阅读起来明显 变量 == 常亮 更符合人类阅读习惯。至于写错的问题,现代软件开发的编译器或者语法检查器早就能解决这种无聊的问题了……
wdlth
2015-09-30 20:09:12 +08:00
以前总有人说 value == false 应该写成 false == value ,这样就算写成了一个=, value 不会被赋值。
不过很多 IDE 是不允许在判断时写一个=的,还有 Java 、 Python 等语言可以用 equals 、 is 等方法判断,看来还是要与时俱进。
88250
2015-09-30 20:11:33 +08:00
看你们讨论,我又写了几行。😊
suduo1987
2015-09-30 20:12:14 +08:00
null==?, true 不写
Quaintjade
2015-09-30 20:13:51 +08:00
我觉得 Yoda conditions 中文可以翻译成智叟表示法(甚矣,汝之不惠)。。。
samael
2015-09-30 20:34:57 +08:00
@vietor 0bug 是吧?:D
zjqzxc
2015-09-30 20:40:24 +08:00
if(file.exists()) ...;
else ...;

如果文件存在执行...;否则的话执行...
多自然语言~~一边说中文一边写。
matthewgao
2015-09-30 20:58:20 +08:00
这个逻辑还没复杂到需要这样写,这么简单的直接写就好
crazystory
2015-09-30 21:03:06 +08:00
看到有人说 if 写一个等号会有 IDE 提示错误的我也是醉了。在支持多种语言的 IDE 下,是否提示错误是根据语言来的。比如 if ($a = 1)这种语法在 php 中属于合法的,IDE 并不会提示错误, IDE 会提示错误,但在 golang 中这样写是会直接报错的。所以结论就是 yoda 并不是一竿子打死的的无意义,在某些语言里还是有重大意义的
crazystory
2015-09-30 21:03:43 +08:00
建议多去了解一下其他语言的规范再来说某种写法是否有意义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/224872

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX