【发布时间】:2012-12-16 13:38:42
【问题描述】:
假设您想测试输入是否是几个常量字符串之一,并且忽略性能,它是否是一种反模式:
if ("yes oui ja da".contains(answer)) {
// answer was in the affirmative
}
而不是更传统的:
private static List<String> affirmativeAnswers = Arrays.asList("yes", "oui", "ja", "da");
if (affirmativeAnswers.contains(answer)) {
// answer was in the affirmative
}
它的代码少了很多,也更容易阅读,但它是“黑客”吗?
编辑:
为了更安全,如果担心部分匹配,可以这样编码:
if (",yes,oui,ja,da,".contains(',' + answer + ','))
还是少了很多代码(虽然越来越丑)
【问题讨论】:
-
当您使用
regex在没有boundary的情况下搜索特定模式时会发生同样的事情。这不是黑客攻击。这是一个错误..
标签: java coding-style contains