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

问题描述 投票:3回答:3

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

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

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

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

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

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

有什么想法吗?

*编辑*

忘了提这个:

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

java hardcoded
3个回答
4
投票

如何使用具有类似内容的properties文件

product1=prod1 
product2=prod2

和你的方法..

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

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

1
投票

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

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


1
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.