You possibly can Exchange Conditional with Polymorphism.
class Checkboxes {
// ...
Boolean multipleCheckboxVerification() {
change (roleName) {
case CheckboxA:
return permissionPage.isSelectedChkA() && permissionPage.isSelectedChkC()
&& permissionPage.isSelectedChkE() && !permissionPage.isEnabledChkC() && !permissionPage.isEnabledChk();
case CheckboxB:
return !permissionPage.isSelectedChkA() && permissionPage.isSelectedChkC()
&& permissionPage.isSelectedChkE() && !permissionPage.isEnabledChkC() && !permissionPage.isEnabledChk();
....
}
}
}
Refactoring…
summary class Checkbox {
// ...
summary Boolean isValid(Web page permissionPage);
summary String getErrorMessage();
}
class CheckboxA extends Checkbox {
Boolean isValid(Web page permissionpage) {
return permissionPage.isSelectedChkA() && permissionPage.isSelectedChkC()
&& permissionPage.isSelectedChkE() && !permissionPage.isEnabledChkC() && !permissionPage.isEnabledChk();
}
String getErrorMessage() { return "Checkbox A is enabled the place it needs to be disabled"; }
}
class CheckboxB extends Checkbox {
Boolean isValid(Web page permissionpage) {
return !permissionPage.isSelectedChkA() && permissionPage.isSelectedChkC()
&& permissionPage.isSelectedChkE() && !permissionPage.isEnabledChkC() && !permissionPage.isEnabledChk();
}
String getErrorMessage() { return "Checkbox B is enabled the place it needs to be disabled"; }
}
This manner, you possibly can maintain your swtich statements solely as new CheckboxA().isValid()
or new CheckboxA().getErrorMessage()
, e.g.
If it’s worthwhile to create a brand new checkbox, you simply must create a brand new class and add it to change assertion.
If it’s worthwhile to create additional particular circumstances of CheckboxA
, e.g., you possibly can simply create a brand new class and override the strategies.