C#有办法去&& =?

Evo*_*lor 1 c# boolean readability

我有几个布尔值我需要检查并变成一个布尔值以便于阅读:

bool myBoolean = 5 == 5 && "string" == "String" && true && false && CheckSomethingElse();
Run Code Online (Sandbox Code Playgroud)

有没有办法可以将其分解为多行以使其更具可读性?我可以做这个:

bool myBoolean = 5 == 5;
myBoolean = myBoolean && "string" == "String";
myBoolean = myBoolean && true;
myBoolean = myBoolean && false;
myBoolean = myBoolean && CheckSomethingElse();
Run Code Online (Sandbox Code Playgroud)

但我正在寻找更多类似的东西:

bool myBoolean = 5 == 5;
myBoolean &= "string" == "String";
myBoolean &= true;
myBoolean &= false;
myBoolean &= CheckSomethingElse();
Run Code Online (Sandbox Code Playgroud)

但是,第三个代码块与第一个/第二个代码块的功能不同(据我所知).C#是否有办法提高第一个代码块的可读性?或者是否有某种正常的方法来编写这样的布尔值?

JK.*_*JK. 7

为了便于阅读,只需将其解压缩到一个命名方法中,该方法的名称会立即告诉您意图:

public bool FluxCapacitorIsReady()
{
    return 5 == 5 
           && "string" == "String" 
           && true 
           && false 
           && CheckSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)

现在您可以在代码中调用该方法,任何读者都可以立即清楚地知道发生了什么:

if (FluxCapacitorIsReady())
    StartFluxCapacitor();
Run Code Online (Sandbox Code Playgroud)

这是Clean Code的概念:有关详细信息,请参阅http://cleancoders.com.

  • @Enigmativity:隐藏正在发生的事情通常都是_good_事情.你不关心你是否以88英里/小时的速度移动并拥有铀.(钚,实际上是IIRC.)你关心助焊剂电容器是否已准备就绪.代码应该说.如果您需要它们,很容易找到细节,但通常情况下,您不需要. (4认同)
  • 这并不能回答整个问题.它提供了一个很好的选择,但它不是一个完整的答案. (2认同)