通常最佳实践是使用命名常量代替神奇数字,但是维护一个数据库参考表和一个命名常量文件的同步确实很繁琐且容易出错。有没有一种简单的方法来保持这两个信息源的同步,或者我是否忽略了一种明显的设计增强方式?
如果我的问题不清楚,这里有一个例子。我有一个带有2列的参考表:
UserStatus
----------
UserStatusID
UserStatus
这个表将UsersStatusID 1与用户状态“Active”相关联。User表依赖于这个表来规范化用户状态。
因此,在从代码查询用户状态时,我有两个选项:
SELECT UserStatusID FROM Users WHERE UserStatus = 1
或者
SELECT UserStatusID FROM Users WHERE UserStatus = ACTIVE_USER_STATUS_ID
最佳实践是使用后者,这样数字1的含义就很清楚了。但这意味着我必须在我的UserStatus表和代码中维护一个完整的有效UserStatusID列表。如何避免需要同时更新数据库参考表和常量文件?我正在使用一个集中的常量文件,所以只需要在一个地方更新我的代码,但是否有一种方法可以避免在引入新状态时更新常量文件?
我有一个想法:安排一个脚本每天运行一次,通过查询数据库中的参考表来填充常量文件。这是最好的解决方案吗?