[第32周]全栈之路: 权限系统与中文常量名

本文作者: 姚泽源

栏目简介

介绍本周值得分享的技术内容, 周四发布

权限系统

几乎所有开发人员都头疼过权限系统的设计, 但实际上, 学术界在1996年时, 就已经有了比较成熟的权限系统模型: RBAC96

RBAC是基于角色的权限访问控制(Role-Based Access Control)的缩写, 它的基本思路是将权限设计分为用户/角色/权限三个部分, 用户拥有角色, 角色拥有权限. 三者联合, 构成权限系统. 如下图所示

image.png

当然, 这是基础模型, 复杂情况下还会有 角色间的权限继承关系(RBAC1), 角色互斥关系(RBAC2), 以及RBAC3(AC1 + AC2)等情况, 但大致思路就是这样.

js中的汉语常量名

复杂业务逻辑中, 如何给大量相似的常量命名变成了一个难题. 传统会用英文/拼音的方式命名, 但如果所有常量都非常接近的话, 区分不同常量就很困难了:

// 安能辩我是雌雄
const CONST_GE_SHUI_CUSTOMER_PAY       = 'ge_shui_customer_pay'; // 个税买方支付部分
const CONST_GE_SHUI_SELLER_PAY         = 'ge_shui_seller_pay'; // 个税卖方支付部分
const CONST_GE_SHUI_TOTAL_PAY          = 'ge_shui_total_pay'; // 个税支付总额
const CONST_ZENG_ZHI_SHUI_CUSTOMER_PAY = 'zeng_zhi_shui_customer_pay'; // 增值税买方支付部分
const CONST_ZENG_ZHI_SHUI_SELLER_PAY   = 'zeng_zhi_shui_seller_pay'; // 增值税卖方支付部分
const CONST_ZENG_ZHI_SHUI_TOTAL_PAY    = 'zeng_zhi_shui_total_pay'; // 增值税支付总额
const CONST_QI_SHUI_CUSTOMER_PAY       = 'qi_shui_customer_pay'; // 契税买方支付部分
const CONST_QI_SHUI_SELLER_PAY         = 'qi_shui_seller_pay'; // 契税卖方支付部分
const CONST_QI_SHUI_TOTAL_PAY          = 'qi_shui_total_pay'; // 契税支付总额
复制代码

但是, 由于js变量名支持unicode, 所以, 我们完全可以使用中文作为变量名

// 感觉好多了
const CONST_个税_买方支付部分       = 'ge_shui_customer_pay'; // 个税买方支付部分
const CONST_个税_卖方支付部分       = 'ge_shui_seller_pay'; // 个税卖方支付部分
const CONST_个税_支付总额           = 'ge_shui_total_pay'; // 个税支付总额
const CONST_增值税_买方支付部分     = 'zeng_zhi_shui_customer_pay'; // 增值税买方支付部分
const CONST_增值税_卖方支付部分     = 'zeng_zhi_shui_seller_pay'; // 增值税卖方支付部分
const CONST_增值税_支付总额         = 'zeng_zhi_shui_total_pay'; // 增值税支付总额
const CONST_契税_买方支付部分       = 'qi_shui_customer_pay'; // 契税买方支付部分
const CONST_契税_卖方支付部分       = 'qi_shui_seller_pay'; // 契税卖方支付部分
const CONST_契税_支付总额           = 'qi_shui_total_pay'; // 契税支付总额
复制代码

事实上, Swift已经在这么玩了

image.png

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享