Сейчас смотрю отличное видео Coding tech и под названием Is Reduce() Bad? и в нем дается несколько хороших примеров, когда reduce приводит к тому, что его вызов становится плохо читабельным, а результат давит на производительность. Я думал, что это только я не понимаю, зачем суют reducce там, где он на фиг не нужен. И как же приятно было слышать, что старый и проверенный loop на много проще читается и на много быстрее работает.
Со всеми этими новомодными фишками типа Linq в C# народ перестал писать простые циклы, которые читаются проще. Это первое, чему учат программистов и это самое главное, что обязаны понимать все. Но почему-то все пытаются всунуть новомодные приколы и суют reduce в js там, где он не нужен и пишут linq так, что его не понятно. В общем, знающим английский очень рекомендую это видео:
Понравилось? Кликни Лайк, чтобы я знал, какой контент более интересен читателям. Заметку пока еще никто не лайкал и ты можешь быть первым
За другие языки не скажу, но в JS он удобен. Конечно, если нам действительно требуется что-то аккумулировать во время цикла. В JS в большинстве случае удобней перебирать массивы с помощью методов `forEach`, `map` и т.д., чем использовать for.
В плане читабельности мне кажется тут дело привычки. Обычно в цикле немного кода, поэтому затруднений при чтении не возникает.
По поводу "быстрей" (опять же на примере JS), то это всё очень относительно и может разнится от движка. Последние тесты V8 говорят, что разницы нет. Наоборот, в некоторых случаях классический for может проиграть, из-за невозможности применить некоторые оптимизации.
У reduce есть проблема - он постоянно создает копию массива и возвращает ее, это реально влияет на производительность, а никакой оптимизации быстрее, чем простой for быть не может. Но reduce все же можно использовать только в тех случаях, когда код реально будет более читабельным и забить на небольшое падение производительности.
2NoWay, а как же иммутабельность?
Хотите найти еще что-то интересное почитать? Можно попробовать отфильтровать заметки на блоге по категориям.