三元运算符用于增加变量
Ternary Operator use to increase variable
为此使用三元运算符是一个好习惯吗:
answersCounter = answer.length != 0 ? ++answersCounter : answersCounter;
这是我经常问自己的一个问题,因为它经常发生。或者,使用普通的 if 语句更好吗?对我来说,一行看起来更清晰。
这只是意见,但我认为像你这样写增量有点糟糕。
将变量分配给自身的 pre-incremented 版本有点令人困惑。对我来说,最好的代码是最清晰的(除了在必要时点头优化),有时简洁导致清晰,有时则不然(看看用 Perl 编写的任何东西......我的孩子,有点)。
你有没有遇到过这样的编程技巧问题:
int i = 5;
i += i++ + i;
或类似的东西?你自己想,谁会需要知道它是如何工作的,因为你什么时候会把一个变量分配给它自己的 pre/post 增量版本?我的意思是,您永远不会在实际代码中看到它,对吧?
好吧,你刚刚提供了一个例子。虽然它是可解析的,但它不是惯用的,也不比直接 if
.
更清晰
例如
if (answer.length != 0) answersCounter++;
当然,有些人不喜欢没有大括号的 if
语句,也不喜欢没有换行符的大括号,这可能就是你最终得到三元组的原因。具有编码风格的东西需要是 re-evaluated,但如果它导致(主观上)更糟糕的代码以避免一些回车 returns。
再次强调,这只是意见,当然不是规则。
对于Java脚本
因为不清楚 OP 是在询问 Java、JavaScript 还是真的两者兼而有之。
也知道这是一个老问题,但我一直在玩这个并最终来到这里,所以认为它值得分享。
以下内容不执行任何操作,因为三元运算符中的增量器未按预期工作。
let i = 0;
const test = true;
i = test ? i++ : i--;
console.log(i) // 0
将 ++
切换为 +1
并将 --
切换为 -1
确实有效。
然而,它在概念上有点奇怪。我们正在创建变量的增量,然后将该增量变量分配回原始变量。而不是直接增加变量。
let i = 0;
const test = true;
i = test ? i+1 : i-1;
console.log(i) // 1
您还可以使用逻辑运算符 &&
和 ||
。
然而,我个人觉得这更难阅读,并且在不进行测试的情况下确定会输出什么。
let i = 0;
const test = true;
i = test && i+1 || i-1;
console.log(i) // 1
但最终如上评论,if else 语句似乎是最清晰的表示。
这直接增加变量,如果简洁是目标那么它仍然可以在一行上进行。
let i = 0;
const test = true;
if (test) { i++ } else { i-- }
console.log(i) // 1
为此使用三元运算符是一个好习惯吗:
answersCounter = answer.length != 0 ? ++answersCounter : answersCounter;
这是我经常问自己的一个问题,因为它经常发生。或者,使用普通的 if 语句更好吗?对我来说,一行看起来更清晰。
这只是意见,但我认为像你这样写增量有点糟糕。
将变量分配给自身的 pre-incremented 版本有点令人困惑。对我来说,最好的代码是最清晰的(除了在必要时点头优化),有时简洁导致清晰,有时则不然(看看用 Perl 编写的任何东西......我的孩子,有点)。
你有没有遇到过这样的编程技巧问题:
int i = 5;
i += i++ + i;
或类似的东西?你自己想,谁会需要知道它是如何工作的,因为你什么时候会把一个变量分配给它自己的 pre/post 增量版本?我的意思是,您永远不会在实际代码中看到它,对吧?
好吧,你刚刚提供了一个例子。虽然它是可解析的,但它不是惯用的,也不比直接 if
.
例如
if (answer.length != 0) answersCounter++;
当然,有些人不喜欢没有大括号的 if
语句,也不喜欢没有换行符的大括号,这可能就是你最终得到三元组的原因。具有编码风格的东西需要是 re-evaluated,但如果它导致(主观上)更糟糕的代码以避免一些回车 returns。
再次强调,这只是意见,当然不是规则。
对于Java脚本
因为不清楚 OP 是在询问 Java、JavaScript 还是真的两者兼而有之。
也知道这是一个老问题,但我一直在玩这个并最终来到这里,所以认为它值得分享。
以下内容不执行任何操作,因为三元运算符中的增量器未按预期工作。
let i = 0;
const test = true;
i = test ? i++ : i--;
console.log(i) // 0
将 ++
切换为 +1
并将 --
切换为 -1
确实有效。
然而,它在概念上有点奇怪。我们正在创建变量的增量,然后将该增量变量分配回原始变量。而不是直接增加变量。
let i = 0;
const test = true;
i = test ? i+1 : i-1;
console.log(i) // 1
您还可以使用逻辑运算符 &&
和 ||
。
然而,我个人觉得这更难阅读,并且在不进行测试的情况下确定会输出什么。
let i = 0;
const test = true;
i = test && i+1 || i-1;
console.log(i) // 1
但最终如上评论,if else 语句似乎是最清晰的表示。
这直接增加变量,如果简洁是目标那么它仍然可以在一行上进行。
let i = 0;
const test = true;
if (test) { i++ } else { i-- }
console.log(i) // 1