在代码清晰度方面,是否有更好的方法来编写具有大量AND检查的条件而不是大的IF语句?
例如,如果其他字段不符合某些要求,我目前需要在屏幕上设置字段.目前我有一个IF语句,运行超过30 LOC,这似乎不对.
if(!(field1 == field2 &&
field3 == field4 &&
field5 == field6 &&
.
.
.
field100 == field101))
{
// Perform operations
}
Run Code Online (Sandbox Code Playgroud)
解决方案是简单地将它们分解为更小的块并将结果分配给更少数量的布尔变量吗?使代码更具可读性的最佳方法是什么?
谢谢
我会考虑以谓词形式建立规则:
bool FieldIsValid() { // condition }
bool SomethingElseHappened() { // condition }
// etc
Run Code Online (Sandbox Code Playgroud)
然后,我会创建一个这些谓词的列表:
IList<Func<bool>> validConditions = new List<Func<bool>> {
FieldIsValid,
SomethingElseHappend,
// etc
};
Run Code Online (Sandbox Code Playgroud)
最后,我会写出提出条件的条件:
if(validConditions.All(c => c())
{
// Perform operations
}
Run Code Online (Sandbox Code Playgroud)