C# accessGroup权限校验if条件逻辑的优化实现方式咨询
优化思路
你原来的代码最大的冗余是权限判断通过后的业务逻辑完全重复了两遍,完全可以先合并权限判断条件,再统一走后续流程,不仅代码更短,后续改业务逻辑也只需要改一处,不会出现两边改漏的问题。
权限判断的逻辑可以直接合并为一个布尔表达式:
只要满足 baccess 或 result.Admin 任意一个为真,或者当前不是Admin组且result.PowerUser为真,就符合权限要求,完全匹配你原来的校验规则。
优化后代码
// 先统一做权限校验 bool hasPermission = baccess || result.Admin || (accessGroup != "Admin" && result.PowerUser); if (!hasPermission) { // 没有权限直接返回,提前退出减少嵌套 return null; } // 权限校验通过后只写一遍业务逻辑即可 var FileInfo = GetFile(fileManagerGuidId); if (FileInfo == null) { return null; } // 取客户ID提前处理,代码更整洁 int customerId = Request.Cookies["customerid"] != null ? Convert.ToInt32(Request.Cookies["customerid"].Value) : 0; FileManagerLog _filemanagerLog = new FileManagerLog() { CustomerId = customerId, FileManagerGuid = new Guid(fileManagerGuidId) }; SaveFileManagerLog(_filemanagerLog); byte[] fileBytes = FileInfo.FileData; return File(fileBytes, System.Net.Mime.MediaTypeNames.Application.Octet, FileInfo.FileName);
额外优化点
- 用提前退出的写法减少嵌套层级,代码可读性更高
- 日志类赋值用了对象初始化语法,代码更简洁
- 没有任何额外的性能损耗,判断逻辑和原逻辑完全等价
内容的提问来源于stack exchange,提问作者Jefferson
相关产品推荐
相关产品推荐

