methodA()
является хорошей причиной, поскольку он следует структурированному программированию с одним входом/с одним выходом и выполняет итерацию списка только один раз.
methodA()
очищен:
public static boolean methodA(List<String> targetList) {
boolean result = false;
for(String str : targetList){
if(str.equals("word1") || str.equals("word2")) {
result = true;
break;
}
}
return result;
}
methodB()
хорошо, потому что это всего лишь несколько строк короче, итерация по списку раз, занимает меньше памяти (без использования результата boolean
, ОЧЕНЬ МЕЛКАЯ память сохранить), возвращается сразу после успеха.
methodB()
очищены:
public boolean methodB(List<String> targetList){
for(String str : targetList){
if(str.equals("word1") || str.equals("word2")) {
return true;
}
}
return false;
}
После изучения потоков, один вкладыш, который следует за однократные/одного выхода структурированного программирования и итерацию списка только один раз.
public static boolean methodX(List<String> targetList){
return targetList
.stream()
.anyMatch(target -> target.equals("word1") || target.equals("word2"));
}
Использование:
public static void main(String[] args) throws Exception {
List<String> targets1 = new ArrayList() {{
add("hello");
add("goodbye");
}};
System.out.println(methodA(targets1));
List<String> targets2 = new ArrayList() {{
add("hello");
add("goodbye");
add("word1");
}};
System.out.println(methodA(targets2));
List<String> targets3 = new ArrayList() {{
add("hello");
add("goodbye");
add("word2");
}};
System.out.println(methodA(targets3));
}
Результаты:
false
true
true
Что касается производительности, все они перебирать список только один раз, так ИМО это просто сводится к личным предпочтениям, как, к которому лучше всего использовать. Для меня это было бы methodX()
Почему бы не избавиться от вашего логического «результата» вообще и просто «вернуть false» в нижней части вашего примера №2? Читает, по-моему, –
После того, как компиляторы Java и JIT сделаны с этим кодом, нет никакой разницы.В общем, начните с написания кода, который прост в обслуживании, и сосредоточьтесь на улучшении ваших алгоритмов и структур данных. Беспокоитесь о микро-оптимизации только после того, как у вас все будет работать, и вы увидите, какие улучшения необходимы. – keshlam
Все сводится к тому, как вы любите читать/писать свой код, я старая школа, мне нравится одна запись и одна точка выхода для всех моих методов, подумайте, растет ли код, чтобы операторы return отображали несколько экранов (вы нужно прокрутить), вы можете быстро потерять или пропустить «возврат», которые могут затруднить выполнение логики, поэтому лично я предпочитаю пример # 1 – MadProgrammer