Ham*_*jan 0 c++ compiler-construction optimization coding-style code-readability
if (false == x) { ...}
Run Code Online (Sandbox Code Playgroud)
而不是:
if (!x) { ... }
Run Code Online (Sandbox Code Playgroud)
和
if (false == f1()) { ...}
Run Code Online (Sandbox Code Playgroud)
而不是:
if (!f1()) { ... }
Run Code Online (Sandbox Code Playgroud)
我认为if(假= = ......版本更具可读性.你同意,或者你可以提出另一个技巧吗?它会一样快吗?谢谢.
这就是我不喜欢的原因!x:
if (25 == a->function1(12345, 6789) &&
45 == b->function1(12345, 6789) &&
!c->someOtherFunction(123)) { ... }
Run Code Online (Sandbox Code Playgroud)
以下似乎更好:
if (25 == a->function1(12345, 6789) &&
45 == b->function1(12345, 6789) &&
false == c->someOtherFunction(123)) { ... }
Run Code Online (Sandbox Code Playgroud)
我个人觉得这个表格if (!x) { ... }
最具可读性,但现在它们都会产生相同的代码.
编辑:在您的示例中,我将执行以下操作:
if ( a->function1(12345, 6789) == 25 &&
b->function1(12345, 6789) == 45 &&
!(c->someOtherFunction(123))) { ... }
Run Code Online (Sandbox Code Playgroud)
但这真的只是个人偏好的事情.做你最可读的事情.它不会有任何区别.
我认为if(假== ......版本更具可读性.你同意,或者你可以提出另一个技巧?
你这样做是错的.
false == x
返回一个bool,显然必须与之比较true
!
if (true == (false == x)) { ...}
会更好.但是这又会返回一个bool,所以为了安全起见,让你的代码更具可读性,我们最好这样做:
if (true == (true == (false == x))) { ...}
.等等.一旦你开始将布尔值与布尔值进行比较,你会在哪里停止?结果总是另一个布尔值,为了保持一致,你必须将它与布尔值进行比较.
或者您可以学习理解您正在使用的语言,并使用它if (!x) { ...}
,它可以准确地表达您想要的语言.
您认为哪个更具可读性?
if (false == x) { ...}
转换为"如果false等于x则为真".if (!x) { ...}
转换为"如果x不是真的".老实说,真的,真的说第一种形式"更具可读性"吗?你能用一句话说吗?"如果false等于x,那么这是真的吗?"
它不是更具可读性,它只是向任何程序员读取你的代码"我不理解if语句或布尔值".