0

鉴于以下情况:

bool isCorrect = theAnswer == 42;

false在 C#(一般编程)中测试布尔逻辑的首选方法是哪种?

if (!isCorrect)
  // throw exception

或者

if (isCorrect == false)
  // throw exception

我问的原因是因为我们的一位高级开发人员建议我们应该始终使用后一种方法,因为它提高了可读性并确保其他开发人员可以清楚地看到错误检查;感叹号很容易漏掉。我更喜欢前者,因为它对我来说更简洁易读。

我知道这可能是一个主观问题,所以想知道是否在任何编码风格中都提到了具体的偏好。

4

4 回答 4

3

我见过高级开发人员的生产代码包含这样的代码:

if (isCorrect.ToString().Length == 5)

但我仍在使用:

if (!isCorrect)

使用您认为对您更具可读性的内容,所有开发人员中没有统计数据))

于 2012-12-07T12:57:51.577 回答
1

首选方法(我不确定它是否真的最佳实践,但绝对应该是)是测试false

// First question: "Is the answer correct ?"
bool isCorrect = theAnswer == 42;

// Second question: "What if it is ?"
if (isCorrect) 
{

}
else //Third question: "What if it isn't ?"
{
}

如果您需要遵循代码的实际流程,它不仅更合乎逻辑,而且可以避免滚动以跳过错误处理。

此外,为了完整性,值得指出的是布尔名称应该始终是正数:想想isCorrectVS isNotWrong... isPositiveVS isNotNegative... 不仅更容易阅读而且也更容易理解。

于 2012-12-07T13:02:23.403 回答
0

你是对的,(!condition)更简洁。
高级开发人员说得对,(condition == false)更“可见”(或者如果您愿意,也可以阅读)。

因为它只是归结为偏好,所以无论你喜欢与否,你都应该按照高级开发人员的建议去做,并保持一切一致。当您是高级开发人员时,您可以返回并更改所有内容。

于 2012-12-07T13:04:06.377 回答
0

鉴于以下情况:

bool isCorrect = theAnswer == 42;

检查倒数的最清晰方法是(恕我直言!):

bool isWrong = !isCorrect;

...

if (isWrong)
// throw exception
于 2012-12-07T13:04:15.167 回答