翻译硬编码字符串的最佳做法

时间:2013-04-29 09:25:00

标签: java hardcoded

我有一组产品名称的有限字符串。我还有一个Web服务,它发送这些产品名称之一。但是我需要以另一种格式发送产品名称。

所以在发送消息之前我需要一个格式化程序/映射器。

我可以制作一些硬编码的mapper类,它接受一个参数并返回一个硬编码的字符串,如下所示:

String mapper(String productName) {
    switch (productName) {
    case "product1":
        return "prod1";
    case "product2":
        return "prod2"
}

但是,我真的不喜欢这种方法,但我很难想出更好的解决方案。任何人都有更好的解决方案来解决这个问题吗?

我正在考虑将映射存储在数据库中,然后为此映射创建一个DAO,而不是使用一个开关,它使用参数作为键,然后查询返回替代产品名称的数据库,但我不是确定它是否真的是一个更好的解决方案。

有什么想法吗?

*编辑 *

忘记提及:

原始产品名称当前存储在数据库中。我将需要翻译这些名称而不修改当前的代码/表设置,即我无法编辑表和当前类,但我可以根据需要创建新的表/类。

3 个答案:

答案 0 :(得分:4)

如何使用包含

等内容的properties文件
product1=prod1 
product2=prod2

和你的方法..

{
   //initializer
   Properties props = new Properties();
   props.load(...);
}

String mapper(String productName) {
   props.getProperty(productName);
}

答案 1 :(得分:1)

使用枚举(或整数集)作为产品1,2等的ID。

然后使用dictionary / map / array / whatever或get函数来获取名称(“product1”或“product2”)。当您想要使用这些类型时不要使用字符串,因为它们往往会在代码中出现多次,如果您忘记在某个位置更改它,则会出现不一致。

答案 2 :(得分:1)

使用数据库是一种灵活的方法,使您有机会随时调整映射,而无需重新启动任何内容。但是,在这种情况下,性能可能会受到关注。如果是这样,请构建完整映射表的缓存并为其设置定期刷新计划。