慎用数据字典
还是那个陈年老项目,在熟悉一个新模块,看到一些代码,记录一下。
编程中使用数据字典是很常见的,有时候使用它为了图方便能够造成滥用,最常见的的场景就是在数据库的数据字典里面配置某种个类型,然后在某种类型下面维护很多值,又在代码中强依赖它来写业务逻辑处理,这对代码的可读性是不友好的。
比如:在字典里面配置了“设备类型”这种类型字典,然后有值列表,设备类型包含1、2、3 …(或者稍微友好一些使用code = device_type_mac),然后在代码中根据设备类型做对应的业务处理。
1 |
|
这样子会导致2个问题:
- 需要跨工具职能去了解业务,假设了解某个设备做了哪些业务处理,总是往返于代码和数据当中,可能还因为数据的缺失导致对业务理解的断层,有点像我们数据库的存储过程和触发器这些工具的缺点,它的出发点是好的,是为了方便我们更方便的维护数据,但是它对我们代码的可读性也是不友好的,总要从代码和数据两个方面结合才能看到业务的整体 。
- 某天系统迁移到新的场景,有新的设备类型,可能由于我的设备类型没有正确配置,导致业务逻辑漏未做处理,会出现那种不是很明显,但是很重要的逻辑被疏漏,而且不容易排查。
解决的方式,我推荐尽量用枚举来实现对应的功能,因为这种针对性业务处理它的枚举值是有限的,它能从引用关系就能看到整体业务的全貌,如果迁移到新的场景,它能显现的告诉阅读人员怎样去扩展。具体实现对应的业务处理可以结合策略模式优雅的扩展。
慎用数据字典
https://www.lianbian.net/编程/501bcdfdbadb.html