这个问题适用于每个具有短路AND运算符的编程语言,而不仅仅是C#.
问题很简单 - 使用短路评估来避免超出范围的索引异常,例如:
if ((x > 0) && (bar[x] == foo))
Run Code Online (Sandbox Code Playgroud)
要么
if (((x > 0) && (x < bar.Length)) && (bar[x] == foo))
Run Code Online (Sandbox Code Playgroud)
糟糕的编码风格?我知道我可以像这样嵌套循环:
if (x > 0)
{
if (bar[x] == foo)
{
}
}
Run Code Online (Sandbox Code Playgroud)
但我发现这是非常难以理解的.
我会这样说
if ((x > 0) && (bar[x] == foo))
Run Code Online (Sandbox Code Playgroud)
编码风格也不错.它甚至可能都很好.我肯定更喜欢它if像你描述的嵌套结构.
顺便说一句,我会减少你使用的括号数量.这些都是同样正确的,至少在C#和大多数其他C语言中是这样的:
if (x > 0 && bar[x] == foo)
if (x > 0 && x < bar.Length && bar[x] == foo)
Run Code Online (Sandbox Code Playgroud)
知道该语言的读者(你必须在某种程度上假设这一点)将能够很容易地理解上述短路表达式.那些读者可能会反对嵌套if样式,因为它占用了比获得正确行为所需的更多空间.
| 归档时间: |
|
| 查看次数: |
147 次 |
| 最近记录: |