if (someString != null && map.containsKey(someString = someString.toLowerCase()))
我想知道这是否会被认为是分配我的字符串值的好方法或坏方法。我相信通过以这种方式编写代码,我会加倍使用 null 检查?
我会说不好,因为它隐藏了您的意图,当其他人正在查看您的代码时,这一点更为重要。没有性能改进,只是可读性下降。同样在我习惯于避免这种情况时,我什至不知道这甚至可以在 Java 中使用(我通常在 PHP 脚本中看到这一点)
我能看到的唯一问题是,如果你错误地得到==
而不是=
,它将是一个布尔值,并且会给你意想不到的结果,因为它不会向你显示Compiler Error
,并且条件永远不会成立。
Map.containsKey
将永远返回false
- No Compiler Error
,不Runtime Exception
,每次都只是false
结果,它会让你的生活地狱般地寻找问题: -
if (someString != null && map.containsKey(someString == someString.toLowerCase()))
理想情况下,您应该避免这样使用它。当您以这种方式分配代码时,代码的可读性会降低。此外,不能保证您不做任何typing mistake
. 因此,最好避免以这种方式使用它。
Java 中的containsKey
方法需要任何Object
作为参数实现的东西。在这里你可以找到它。
第一个错误是将赋值作为参数发送,这应该分开完成,或者只是someString.toLowerCase()
作为参数发送。
然后,嵌套if
条件定义了执行代码时的优先级,也增加了可读性并可能防止最终可能出现的其他奇怪错误,但这也取决于程序的其余部分做什么。