Я смотрел презентацию на Java, и в какой-то момент лектор сказал:
"Мутируемость в порядке, обмен хорош, совместная изменчивость - это работа дьявола".
То, что он имел в виду, это следующий фрагмент кода, который он считал "крайне вредной привычкой":
//double the even values and put that into a list.
List<Integer> numbers = Arrays.asList(1, 2, 3, 4, 5, 1, 2, 3, 4, 5);
List<Integer> doubleOfEven = new ArrayList<>();
numbers.stream()
.filter(e -> e % 2 == 0)
.map(e -> e * 2)
.forEach(e -> doubleOfEven.add(e));
Затем он продолжил писать код, который должен использоваться, который:
List<Integer> doubleOfEven2 =
numbers.stream()
.filter(e -> e % 2 == 0)
.map(e -> e * 2)
.collect(toList());
Я не понимаю, почему первая часть кода - "плохая привычка". Для меня они достигают одной и той же цели.