C# 如何以清晰的方式编写这个嵌套的多条件分支?
假设C# 如何以清晰的方式编写这个嵌套的多条件分支?,c#,conditional,C#,Conditional,假设P1、P2、Q1和Q2是谓词 我提出了同一事物的两种实现: if (P1(x) ? P2(y) : true) && (Q1(z) ? Q2(w) : true ) do-something 及 我更喜欢第一个,因为它更简洁。但是我错过了什么吗 有没有比以上两种方法更好的方法来做同样的事情 如果有更多的谓词对R1和R2与P1和P2类似,那么第一种方法是好的还是最好的方法 将P2和Q2实现为函数是否总是更好?如果它们不是作为函数实现的呢?如果(!P1(x)| P2(y
P1、P2、Q1
和Q2
是谓词
我提出了同一事物的两种实现:
if (P1(x) ? P2(y) : true) && (Q1(z) ? Q2(w) : true )
do-something
及
我更喜欢第一个,因为它更简洁。但是我错过了什么吗
有没有比以上两种方法更好的方法来做同样的事情
如果有更多的谓词对R1
和R2
与P1
和P2
类似,那么第一种方法是好的还是最好的方法
将
P2
和Q2
实现为函数是否总是更好?如果它们不是作为函数实现的呢?如果(!P1(x)| P2(y))和(!Q1(z)| Q2(w))做点什么你缺少一个(
。上面的内容真的很清楚吗?这显然是一个主观评估。哪一个更清楚?@PeterDuniho显然,这是编写表达式的一个非常好的方法,因为它清楚地显示了逻辑。使用if/else
的等效逻辑也是可以接受的,并且在实践中可能需要,例如,如果您需要computey
如果您需要调用P2
。有时,它可能有助于调试目的(更容易在特定情况下设置断点),或者如果表达式很长,则使代码更易于阅读……因为这似乎是一个关于函数代码可能排列的问题,它似乎更适合
if (P1(x) && Q1(z) )
if ( P2(y) && Q2(w) )
do-something
if (P1(x) && ! Q1(z) )
if ( P2(y) )
do-something
if ( ! P1(x) && Q1(z) )
if ( Q2(w) )
do-something
if ( ! P1(x) && ! Q1(z) )
do-something