在传递变量时分配变量

时间:2012-11-21 19:08:36

标签: java standards

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

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

3 个答案:

答案 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条件定义了执行代码时的优先级,增加了可读性,并可能防止最终可能出现的其他奇怪错误,但这也取决于程序其余部分的作用。