假设我有一个标志或其他功能:
void foo (Param p1, Param p2, bool setVariable)
{
//if setVariable is true, set some bool var to true, else false
}
对于以下其他人,是否有强烈的偏好?
if (setVariable)
_someClassVariable = true;
else
_someClassVariable = false;
或
_someClassVariable = setVariable;
显然第二种是打字较少,但第一种打击让我更具可读性。哪一个会更受欢迎?
答案 0 :(得分:3)
我会选择第二个,它就像可读一样。可读性更多地取决于变量的名称而不是两个选项的选择。如果变量和参数具有良好的名称,则赋值将是自然的。这类似于从你不会做的函数返回一个布尔值:
bool conditionHolds() {
if (condition)
return true;
else
return false;
}
(如果你正在考虑这样做,请重新考虑一下)
答案 1 :(得分:3)
我通常更喜欢第二种。对我而言,第一个是强烈的警告,即编写代码的人最多只能胜任。
那就是说,我也倾向于建议不要将bool作为参数传递。 foo(true);
与foo(false);
的真正含义很少见。通常最好使用枚举,以便获得foo(do_this);
与foo(do_that);
答案 2 :(得分:2)
我更喜欢第二个。如果较少的打字不足以成为你的争论,也要考虑你的同事的意见。如果我看到像
这样的话,我个人会笑if (condition)
return true;
else
return false;
在生产代码中。 (如果变量是bool,并且您没有使用它来实现某些转换机制)。
答案 3 :(得分:2)
后者要好得多,if else看起来无用,在代码和编译器生成的代码中引入了额外的复杂性(虽然PROBABLY优化了)。
我也会避免使用前导下划线表示法,其中一些名称是为标准库和编译器保留的。