В каждом случае правило может зависеть от конкретных обстоятельств или просто «вкуса».
Следует избегать создания объекта в цикле, если существует большое количество итераций, а создание экземпляров стоит дорого. Если вы можете переместить код из цикла, вы избежите много экземпляров объекта и, следовательно, улучшите производительность. Сказав это, это не всегда возможно, а в некоторых случаях это просто не влияет на общую производительность кода. В этих случаях делайте все, что яснее.
Для OnlyOneReturn есть несколько способов увидеть это (с ярыми сторонниками позади каждого), но все они в основном сводятся к вкусу.
Для вашего примера, сторонники OnlyOneReturn хотят код как:
public int performAction(String input) {
int result;
if (input.equals("bob")) {
result = 1;
} else {
result = 2;
}
return result;
}
Вместо:
public int performAction(String input) {
if (input.equals("bob")) {
return 1;
} else {
return 2;
}
}
Как видите, дополнительная ясность ReturnOnlyOnce может быть обсуждена.
Также см. Этот SO вопрос, который относится к реализации в циклах .