我正在构建基于表的数据可视化,其中主键由最多4个整数组成。例子:
5
015
1234
在整个应用程序中,我需要为这些实体使用关键约定,我正在考虑我的选择。我关心的是,如果开发人员没有足够重视Type并且在执行查找等时会出现错误,那么前导零/ es将被剥夺:
regions["15"];
regions : {
"015" : {name: "ABC", ...}
}
您认为我应该如何处理? 如何在不施加障碍的同时防止错误?
答案 0 :(得分:0)
你有两个问题:一个是由于十进制转换导致的前导零丢失,另一个是前导零向javascript表明你正在处理一个带有粗心转换的八进制数的事实(例如parseInt
没有基地)。
避免任何问题的最简单方法是在键上提供另一个前缀字符,实际上是下划线,字母或任何其他字符。在您的API中,您可以删除您选择的内容,同时需要高级访问者的前缀字符。
通过要求开发人员输入前缀字符,确保始终获得字符串,并且他们将4个字符的数字字符串构建为字符串。
另一种选择是明确键入您的访问功能,但如果您通过[]
提供本机密钥访问,则这不是一个选项(直到javascript的未来版本提供Object.observe
支持)。< / p>
答案 1 :(得分:0)
这是一个艰难的决定,两个方向都有利弊。
如果您将数据存储为object
,则前导零没有问题代码问题。
另一方面,如果您尝试以array
的形式访问数据,则会删除前导零。不注意的程序员很容易犯错误并以错误的方式访问数据。不幸的是,错误可以在任何一个方向上进行。两种选择都不是银弹。
上次我遇到这种情况时,我决定用一个常量字符作为所有键的前缀,以提醒其他编码员这些是string
键,而不是numeric
键,类似于这样:
regions : {
"R015" : {name: "ABC", ...}
}
你甚至可以设置一个模块并定义你自己的getter和setter来根据需要添加/删除常量。