在单个语句中有多个if条件时,我该如何缩短C#代码

时间:2019-06-10 15:53:44

标签: c#

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

我们有4个隐私政策,我们可以打开或关闭这些政策。因此,有时仅显示2或3条策略,而不是4条。如果仅显示2或3条策略就可以了,并且不应破坏测试。因此所有的if s。有什么我可以使用的,而不是很多?我觉得在一个方法下有很多ifs。

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); }    
    }

我没有错误。该代码工作正常。我只需要将其缩短一点或使用其他函数来缩短代码。

2 个答案:

答案 0 :(得分:1)

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

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

成为:

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

答案 1 :(得分:0)

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

const api = {
  baseURL: 'https://localhost:3000',
  users: {
    userPath: '/api/.../',
    registerPath: '/api/.../register/',
  },
  bills: {
    billsPath: '/api/.../bills/',
  },
  transactions: {
    registerPath: '/api/.../transactions/',
  },
};

module.exports = api;

它像紧凑的If / Else语句一样工作。它测试“?”之前的条件。如果为true,则在“:”之前执行代码;如果测试为false,则将在“:”之后执行代码。