我有一个需要验证的项目列表。列表可以包含任意数量的 A、B 和 C 类型的项目,但在保存列表之前,必须确认以下规则:
- 如果你有A,你需要B或C
- 如果你有B,你需要A
我最终得到了以下代码(saudo 代码):
bool IsListValid()
{
var a = list.ContainsAny(A);
var b = list.ContainsAny(B);
var c = list.ContainsAny(C);
if (!a && !b)
return true;
if (a && (b || c)
return true;
return false;
}
我不喜欢这段代码。
1. 连续三次使用 Any 可能会迭代列表三次
2. if 对我来说看起来不太好。
当然,使用不同的变量名称并将测试提取到具有好名称的方法中会更好,但我认为有更好的方法可以完全解决这个问题。我只是不确定如何...
有小费吗?