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

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

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

8085 次点击
所在节点    程序员
67 条回复
hunterzhang86
2015-09-30 21:12:02 +08:00
@YuJianrong 正解
dorentus
2015-09-30 21:14:39 +08:00
@crazystory PHP 的 IDE 太多了我不知道, Objective-C 也一样,赋值表达式是有值的,并且大部分类型的值可以隐式转化为布尔值,于是你那种写法也是合法的语句,但是正常配置的 Xcode 还是会给一个警告。

我写这么多只是想说,和语言规范无关,编译器或者 IDE 只要想做到,就完全可以给用户可能出错的代码以警告。
xcv58
2015-09-30 21:15:58 +08:00
反正编译器会给你优化掉
lincanbin
2015-09-30 21:18:22 +08:00
反正我在 PHP 中习惯这么写,并且还是用强类型比较符===,很多函数都是返回 mixed 。
只要有值,不一定是 bool true ,都能使 if 成立。
ncwhale
2015-09-30 21:41:18 +08:00
@lincanbin 那是因为 PHP 是世界上最好的语言啊喵~
zmj1316
2015-09-30 21:44:32 +08:00
@lsmgeb89 这应该是在没有 Bool 类型的时候或者比较常量的时候才使用,如果语言支持 bool 类型那就是多此一举
ryd994
2015-09-30 22:04:19 +08:00
gcc warning 妥妥的
fengxiang
2015-09-30 22:05:51 +08:00
true,false =false,true
zhujinliang
2015-09-30 22:44:03 +08:00
if (脱裤子 == 放屁())
刚才脑中突然出现这句话,然后自己被自己逗笑了。。。

话说印象中以前 Basic 要写 if Something = false then ... 而不是 if !Something then ,具体怎么回事记不清了,或许是某些 Basic 解释器只认 if ... = ... then 的形式,也可能是我记错了
huanglexus
2015-09-30 23:10:39 +08:00
你这就和 if (true) return true else return false 差不多...
RemRain
2015-09-30 23:23:00 +08:00
不是应该写成 if (false != file.exists()) 吗?

另外推荐这么写: if (false xor file.exists()),除了有莫名的对称美感外,还有莫名的专业感~
blue7wings
2015-09-30 23:26:18 +08:00
这个是很久以前的方式了,《编写可执行代码》一书中,还专门说了这个问题,现在已经不提倡这么些了,影响代码的阅读,虽然自己看着舒服,如果别人看的话就莫名的难受了。
mimzy
2015-09-30 23:38:28 +08:00
《编写可读代码的艺术》里提到了这个问题:
「比较的左侧:“被问询的”表达式,它的值更倾向于不断变化。比较的右侧:用来做比较的表达式,它的值更倾向于常量。」
「这条指导原则和英语的用法一致。我们会很自然地说:“如果你的年收入至少是 10 万美元”或者“如果你不小于 18 岁。”而“如果 18 岁小于或等于你的年龄”这样的说法却很少见。」
「遗憾的是,这种顺序的改变使得代码读起来很不自然(就像电影《星球大战》里的尤达大师的语气:“除非对此有话可说之于我”)。庆幸的是,现代编译器对 if (obj = NULL) 这样的代码会给出警告,因此“尤达表示法”是已经过时的事情了。」
mornlight
2015-10-01 00:30:08 +08:00
我们的编码规范里直接禁止写 == YES 这种
vikeria
2015-10-01 08:09:31 +08:00
看着不觉得蛋疼吗?
gamexg
2015-10-01 09:17:34 +08:00
python 表示少一个=号直接报错。
tushiner
2015-10-01 11:28:11 +08:00
判断布尔类型值不用这样,判断数据值和类型是否相等用 equal ,直接用"=="在面向对象语言中的应用越少越好
oska874
2015-10-01 12:21:28 +08:00
题主 C 出身吧。
pseudo
2015-10-01 12:25:14 +08:00
@echo1937 请问朱逸之是个什么梗,一直没弄清楚
angkec
2015-10-01 13:07:45 +08:00
@pseudo 猪一只?

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

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

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

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

© 2021 V2EX