【发布时间】:2019-05-03 06:16:25
【问题描述】:
我有一些用 C# 编写的代码,我需要为其添加一些条件。从我的一种方法中,我调用了另一种方法“UpdateData()”,它将一些数据更新到数据库中。现在为此,我需要添加一些条件。
- 配置文件中会有appsetting,是一个布尔值。如果值为true,则必须检查point2中的条件,如果值为false,则必须直接调用UpdateData()方法。
-
如果point1为真,则需要检查的类型和状态很少。
条件 1:如果类型为“A”且状态为“完成” - 则调用“UpdateData()”。
条件 2:如果类型为“B”且状态为“完成”或“部分”或“某些 xyz”,则调用“UpdateData()”。
为此,我编写了以下代码:
bool checkStatus = Convert.ToBoolean(ConfigurationManager.AppSettings["CheckStatus"]);
if (checkStatus)
{
if (type == "A" && status == "Complete")
{
UpdateData();
}
else if (type == "B" && (status == "Complete" || status == "Other status" || status == "someother status"))
{
UpdateData(); // for type B , data should not be updated if status is anything other than those in condition.
}
}
else
{
UpdateData();
}
这是按预期工作的。但我不想写嵌套的 if-else。如果明天我需要包含其他一些状态和类型,我需要在此处添加另一个 if 条件。
有没有更好或者优化的写法?
【问题讨论】:
-
不管条件如何,都会经过
UpdateData(),这是故意的吗? -
@Steven,status 有很多值。只有当状态是代码中提到的两个或三个之一时才需要更新数据。
-
如果您将这些条件拆分为方法,那么一种方法用于 A & 完成,一种方法用于 B & 完成,或其他状态,或其他状态,您可以制作 1 if 和 do if (cond1 () || cond(2) || !checkStatus) 更新数据