入力がいくつかの定数文字列の 1 つであるかどうかをテストしたいと仮定し、パフォーマンスを無視すると、コーディングのアンチパターンになります。
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 + ','))
それはまだコードがはるかに少ないです(醜くなっていますが)