【问题标题】:How do I manage multiple verbose string constants?如何管理多个详细字符串常量?
【发布时间】:2014-09-17 12:29:20
【问题描述】:

我有 24 个非常冗长的字符串,例如“输入基因符号或通用名称...”现在,通常使用较短的字符串常量和较少的属性,我在类中声明内部枚举。但是,由于这些字符串中有 24 个,我不确定是否有更有效或更简洁的方式来组织我的代码。

附加信息:

  • 我只使用这些字符串一次
  • 需要将它们放入字符串数组中,以便用于特定目的
  • 这个类包含这些字符串,是唯一使用它们的类

这是我当前的代码:

    private static String[] getTemplateDefaults()
    {
        String[] defaults = new String[]
        {
            "Enter Gene symbol or common name",
            "Enter blah blah blah",
            "Enter blah blah blah", 
            "Enter blah blah blah",
            "Enter blah blah blah",
            // continued for 19 more times...
        };

        return defaults;
    }

真的只是在寻找一些想法来组织这个而不显得那么麻烦。

谢谢!

【问题讨论】:

  • 如果每个字符串都使用一次,那么为它定义一个常量有什么意义呢?将它们全部放入一个数组有什么意义?你有什么收获?没有。你会失去什么?可读性。 System.out.println("Enter a gene symbol or common name...")System.out.println(getTemplateDefaults()[5]) 更具可读性
  • 我传递给它的方法需要一个数组。我只是想知道我是应该像我拥有它的方式那样即时执行它还是以其他方式执行它。
  • 如果目标是拥有一个不变的、不可变的字符串列表,那么真的没有理由每次都生成一个新数组。将其定义为 static final List<String> MESSAGES 并使用 Collections.unmodifiableList() 初始化此常量。
  • 我决定只使用无法修改的私有静态最终变量:private static final String[] DEFAULTS = new String[]{"too many strings"};,而不是调用方法。这样做不允许进一步初始化,读者可以在不引用另一个文件的情况下进行更改。
  • 数组是可修改的。这就是为什么我推荐一个不可修改的列表。

标签: java string enums


【解决方案1】:

真的只是在寻找一些想法来组织这个而不显得那么麻烦。

我宁愿将这些常量字符串放到某个属性文件中并在加载时读取它,这样您就可以修改这些字符串而无需重新编译代码并且它会很整洁

【讨论】:

  • 还支持将应用程序转换为另一种语言而不更改代码
  • 我赞成您的回答,因为它是一个很好的通用解决方案。但是对于我的问题,字符串确实需要明显存在。感谢您的输入!
  • 为什么没有这个建议?
  • 我仍然需要字符串出现在课堂上,所以使用你的建议不适用于我。请参阅我对我原来使用的问题的评论。
  • 你仍然可以这样做,它们只是在外部持久化,加载应用程序you can still read it with one line of code into memory and populate array or List
【解决方案2】:

Java 支持字符串表。您应该在应用程序中使用这些而不是硬编码字符串。

如果您采用这种技术,您还可以轻松推广到多语言支持。

大多数集成开发环境都支持轻松编辑字符串表资源。

【讨论】:

  • 其实我从来没有听说过这个。它在 Eclipse 中叫什么?我找不到它
  • 第二个@Loki,什么是“字符串表”?
猜你喜欢
  • 2011-04-26
  • 2022-07-08
  • 1970-01-01
  • 2012-01-08
  • 1970-01-01
  • 2015-09-22
  • 2013-12-27
  • 2016-01-09
  • 1970-01-01
相关资源
最近更新 更多