【发布时间】: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"};,而不是调用方法。这样做不允许进一步初始化,读者可以在不引用另一个文件的情况下进行更改。 -
数组是可修改的。这就是为什么我推荐一个不可修改的列表。