业务场景中的代码优化-权限优化

2020-12-26 15:47:07

前言

书接上文,已知我们现在有一个一套代码打包成两个系统的项目,起因是功能大体相同。但是在开发初期,只对其中一个系统(简称系统 A) 进行了权限控制(路由权限,操作权限),另一个系统(简称系统 B )并没有进行权限控制。

在一套代码中,要区别出两个不同的系统,经常需要使用环境变量传入的值进行判断区分(见上文描述),除此之外,还有系统 A 的权限判断。现在,需求发生变化,需要在系统 B 中也加入一个简单的权限管理,但是没有系统 A 的那么复杂,只有简单的管理员,普通人员两种,但是也要实现与系统 A 类似的权限职能。

那么,如果再加上一层判断,在代码内的判断将会十分的复杂和不好理解,所以需要对权限进行优化设计。

权限优化

优化的思路是从代码重构的一书中得来的(感谢领导的指点):在数据使用前,对其进行统一处理和初始化,就可以省去使用时的判断了(判断是否为空,是否是数组等)。权限优化这里就用到了这里的 统一处理和初始化 这个思路。

已知项目中系统 A 权限判断的代码是直接可用的,那么,我们是不是可以直接把系统 B 的权限手动处理成和系统 A 一样的权限格式,复用系统 A 的权限判断,就不用去关心在业务内究竟怎么判断了。

如此一来,操作起来就简单了,在项目内手动维护一个权限表,格式和系统 A 的权限表格式一致。当项目初始的时候,从接口获取当前用户是管理员还是普通用户,然后去使用对应的权限表,就可以了。

其它

这个优化的方式带来的好处很直观,就是不用再去业务中增加新的判断,造成代码复杂难懂。但是,也还是有不太好的地方,就是需要手动维护权限,可能会出现遗忘的情况。

至此,这个问题看似解决了,但是在业务不断增加的情况下,代码复杂程度还是会不断攀升,两个系统共用一套代码,弊端还是挺多的。目前看,还是拆开的好:)

可能这个方法不是最优的,后续有新思路再补充。