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