Tag: att enum color needs to be judged to return row count () SSI
When there are multiple layers of nesting in the code, it can reduce the readability of the code and increase the difficulty for subsequent modifications, so we need to decompose complex judgments and return as quickly as possible.
Refactoring pre-code
Public classsecurity{ PublicIsecuritychecker Securitychecker {Get;Set; } PublicSecurity (Isecuritychecker securitychecker) {Securitychecker=Securitychecker; } Public BOOLHasaccess (user user, Permission Permission, ienumerable<permission>exemptions) { BOOLHaspermission =false; if(User! =NULL) { if(Permission! =NULL) { if(Exemptions. Count () = =0) { if(Securitychecker.checkpermission (user, permission) | |exemptions. Contains (permission)) {haspermission=true; } } } } returnhaspermission; }}
Post-Refactoring Code
Public classsecurity{ PublicIsecuritychecker Securitychecker {Get;Set; } PublicSecurity (Isecuritychecker securitychecker) {Securitychecker=Securitychecker; } Public BOOLHasaccess (user user, Permission Permission, ienumerable<permission>exemptions) { if(User = =NULL|| Permission = =NULL) return false; if(Exemptions. Contains (permission))return true; returnsecuritychecker.checkpermission (user, permission); }}
The reconstructed code greatly improves readability and later maintainability.
Refactoring Guide-decomposing complex judgments (Remove Arrowhead Antipattern)