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