1
if (someString != null && map.containsKey(someString = someString.toLowerCase()))

我想知道这是否会被认为是分配我的字符串值的好方法或坏方法。我相信通过以这种方式编写代码,我会加倍使用 null 检查?

4

3 回答 3

2

我会说不好,因为它隐藏了您的意图,当其他人正在查看您的代码时,这一点更为重要。没有性能改进,只是可读性下降。同样在我习惯于避免这种情况时,我什至不知道这甚至可以在 Java 中使用(我通常在 PHP 脚本中看到这一点)

于 2012-11-21T19:12:43.947 回答
1

我能看到的唯一问题是,如果你错误地得到==而不是=,它将是一个布尔值,并且会给你意想不到的结果,因为它不会向你显示Compiler Error,并且条件永远不会成立。

Map.containsKey将永远返回false- No Compiler Error,不Runtime Exception,每次都只是false结果,它会让你的生活地狱般地寻找问题: -

if (someString != null && map.containsKey(someString == someString.toLowerCase()))

理想情况下,您应该避免这样使用它。当您以这种方式分配代码时,代码的可读性会降低。此外,不能保证您不做任何typing mistake. 因此,最好避免以这种方式使用它。

于 2012-11-21T19:13:21.193 回答
0

Java 中的containsKey方法需要任何Object作为参数实现的东西。在这里你可以找到它。

第一个错误是将赋值作为参数发送,这应该分开完成,或者只是someString.toLowerCase()作为参数发送。

然后,嵌套if条件定义了执行代码时的优先级,也增加了可读性并可能防止最终可能出现的其他奇怪错误,但这也取决于程序的其余部分做什么。

于 2012-11-21T19:21:36.140 回答