我有一个棕地应用程序,它有一个复杂的方法。CC 是 14。if 语句验证应用程序设置并生成适当的内联 SQL。
EG 这个 if 语句检查设置。settings 是自定义代码,一个具有多个bool
(非 bool?
)属性的 DTO。
string conditions = " AND (";
List<string> conditionStrings = new List<string>();
if (settings.AlwaysIncludeCommonResults && settings.SelectedCommonLabs.Count > 0)
{
string common = " (Table.Name in (";
for (int i = 0; i < settings.SelectedCommonLabs.Count; i++)
{
common += string.Format("'{0}'", settings.SelectedCommonLabs[i]);
if (i < settings.SelectedCommonLabs.Count - 1)
common += ", ";
}
common += ")) ";
conditionStrings.Add(common);
}
if (settings.AlwaysSelectLast24HoursResults)
{
string last24 = " (DateDiff(hh, Table.PerformedDtm, GetDate()) < 24) ";
conditionStrings.Add(last24);
}
我不知道该怎么做才能简化这个布尔逻辑。Null 合并?...我不知道这是否会变得更好。这种模式在相同的方法中出现了多次。所以我希望多次重复使用答案以减少整体CC并增加可读性。你有什么建议?
更新
在决定取消第一次验证后,添加了进一步的方法逻辑。