【发布时间】:2019-06-10 15:53:44
【问题描述】:
我正在使用此功能来检查某些隐私政策是否显示在 UI 中。如果显示 x 策略,则单击“我同意”按钮进入下一页检查是否显示 y 策略。如果未显示,则标记错误。此过程将重复,直到检查所有策略。
我们有 4 项隐私政策,我们可以打开或关闭它们。所以有时 2 或 3 个策略只会出现而不是 4 个。如果 2 或 3 个策略只显示那很好,不应该打破测试。因此所有的 if 。有什么我可以用的东西来代替这么多的 if 吗?我觉得我在一个方法下有很多 if 。
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 (!privacyPolicy1Expected) 替换为 else。
-
布尔表达式?表达式1:表达式2
-
我同意 codereview 更好。如果您只是有一个代表这些策略的集合并且您在每个策略上调用方法,那么这将变得更短。换句话说,多态性。
-
代码长八行。 为什么它必须更短?
标签: c#