如何简化管理员无用户数限制场景下的isUsersLimitReached判断语句
用户数超限判断语句简化方案
业务规则梳理
- 管理员账号:可创建/绑定的用户数无上限,不会触发超限判定
- 非管理员账号:需要校验当前持有的用户数是否达到
max_users配置值,大于等于该值即判定为超限
简化实现
原代码逻辑是正确的,但三元表达式套固定布尔返回值的写法冗余,还存在usersCount漏写实例上下文this的小问题,用布尔逻辑短路改写后更简洁,判断顺序也更贴合业务优先级:
public get isUsersLimitReached(): boolean { return !this.isAdmin && this.usersCount >= this.max_users; }
逻辑说明
这个写法和原逻辑完全等价:
- 逻辑与
&&遵循短路求值规则,只要!this.isAdmin为false(也就是当前是管理员),就直接返回false,不会执行后面的用户数比较,符合管理员无上限的规则 - 只有非管理员场景下,才会走到后面的阈值判断,返回用户数是否超标的结果
这种写法后续扩展也很方便,如果之后要加新的豁免身份(比如白名单账号、内部测试账号),直接在判断链路前追加豁免条件即可,不用嵌套多层三元,比如新增白名单豁免后的写法:
public get isUsersLimitReached(): boolean { return !this.isAdmin && !this.isWhitelistAccount && this.usersCount >= this.max_users; }
内容的提问来源于stack exchange,提问作者NiNjA_CaT
相关产品推荐
相关产品推荐

