我有这段代码
def errorMap = validateParams(params)
if (errorMap) {
flash.errorMap = errorMap
return
}
我的问题是:我可以将第1行中的分配和第2行中的条件评估结合起来,形成如下所示的单行:
if (flash.errorMap = validateParams(params)) {
return
}
这样做是不好的做法?
由于
Vijay Kumar
答案 0 :(得分:1)
我们在C语言中被灌输,单个等于“=”应该看起来像if语句中的拼写错误。使用单等于你的意思的语法会更难发现拼写错误的情况。
虽然你当然可以做到这一点,但我自己的两分钱是因为这通常是一种不好的做法。它很简洁,但你的if语句现在依赖于对赋值的评估,当你回来并在几个月后重新访问这段代码时,这可能不会立即显现。
答案 1 :(得分:0)
在我看来,这是一个非常好的练习。调用函数并测试其返回值应该一起考虑,并将它们放在源代码中有助于实现这一点。如果你习惯性地这样做,基本上不可能无意中调用该函数,但是忽略代码检查它是否成功。
答案 2 :(得分:0)
如果这是C ++或C#代码,您可以组合分配和评估条件。绝对肯定要避免使用赋值(=)而不是比较(==)。你可以浪费时间搞清楚。
另外,请注意使用修改其参数的条件。
例如, if(x ++> 100)doStuff()
VS
if(x + 1> 100)doStuff()
答案 3 :(得分:0)
虽然隔离的代码看起来精确而优雅,但if-clause中的赋值运算符(=)更可能被忽略为更普遍的比较运算符(==),这将导致更多问题。
我不会在实践中使用它。它可以成为一个很好的多项选择问题。