当单个语句中有许多 if 条件时,如何缩短此 C# 代码



我正在使用此功能来检查UI中是否显示了某些隐私政策。如果显示 x 策略,则单击"我同意"按钮转到下一页以检查是否显示 y 策略。如果未显示,则标记错误。此过程将重复,直到检查所有策略。

我们有 4 个隐私政策,我们可以打开或关闭。因此,有时只会显示 2 或 3 个策略,而不是 4 个。如果 2 或 3 个策略仅显示没问题,并且不应违反测试。因此,所有 if s。有什么东西可以代替这么多吗?我觉得我在一种方法下有很多 if s。

public static void CheckPolicy(bool privacyPolicy1Expected = true, bool privacyPolicy2Expected = true, bool privacyPolicy3Expected = true, bool privacyPolicy4Expected = true)
    {
        if (privacyPolicy1Expected) { PP1AgreementValidation(); }
        if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }
        if (privacyPolicy2Expected) { PP2AgreementValidation(); }
        if (!privacyPolicy2Expected) { App.AssertElementNotPresent(_privacyPolicy2Header); }
        if (privacyPolicy3Expected) { PP3AgreementValidation(); }
        if (!privacyPolicy3Expected) { App.AssertElementNotPresent(_privacyPolicy3Header); }
        if (privacyPolicy4Expected) { PP4AgreementValidation(); }
        if (!privacyPolicy4Expected) { App.AssertElementNotPresent(_privacyPolicy4Header); }    
    }

我没有收到任何错误。代码工作正常。我只需要稍微缩短一下或使用不同的函数来缩短代码。

您正在检查条件是否为真,然后再次检查它是否为真。您可以将其重写为if else

 if (privacyPolicy1Expected) { PP1AgreementValidation(); }
 if (!privacyPolicy1Expected) { App.AssertElementNotPresent(_privacyPolicy1Header); }

成为:

if (privacyPolicy1Expected) 
{ 
    PP1AgreementValidation(); 
}
else 
{ 
    App.AssertElementNotPresent(_privacyPolicy1Header); 
}

如果你想真正缩短它,我会建议使用三元运算符

privacyPolicy1Expected ? PP1AgreementValidation() : App.AssertElementNotPresent(_privacyPolicy1Header);

它的工作方式类似于紧凑的 If/Else 语句。它测试"?"之前的条件,如果为真,则在":"之前执行代码,如果测试为假,它将执行":"之后的代码。

最新更新