Я не знаю доказательств, демонстрирующих преимущества одного стиля над другим.Но в истории программирования есть четкая тенденция к более высоким абстракциям ... и столь же ясная история сопротивления этой тенденции.Переход от Assembly к Fortran или LISP был движением вверх по стеку абстракций.Использование SQL, а не заказное извлечение B-дерева было другим.Переход к FP как внутри языка, такого как Javascript, так и в изменяющейся среде языков программирования, на мой взгляд, аналогичен.
Но многое из этого связано с элементами, более фундаментальными, чем это синтаксическое решение:Эквациональное рассуждение означает, что мы можем строить свои собственные абстракции на более прочной основе.Так что чистота и неизменность имеют важное значение;без очков просто приятно иметь.
Тем не менее, это часто проще.И это важно.Более простой код легче читать, его легче модифицировать.Обратите внимание, что я различаю simple и easy - различие, сформулированное в классическом выступлении Rich Hickey .Те, кто плохо знаком с этим стилем, часто находят его более запутанным;как и программисты на ассемблере, которые ненавидели следующее поколение языка и все такое.
Не определяя промежуточные переменные, даже не указывая аргументы, которые можно вывести, мы можем значительно улучшить простоту.
Трудно утверждать, что это:
const foo = (arg) => {
const qux = baz(arg)
return bar(qux)
}
или даже это:
const foo = (arg) => bar(baz(arg))
проще, чем это:
const foo = compose(bar, baz)
И это потому, что все три включаютэти понятия:
- объявление функции
- ссылка на функцию
второе также добавляет:
- определение аргумента
- тело функции
- приложение функции
- вложенность вызовов функций
, и первая версия имеет:
- определение аргумента
- тело функции
- приложение функции
- определение локальной переменной
- назначение локальной переменной
- оператор
return
в то время как третий добавляет только
Если проще, значит, с меньшим количеством переплетенных понятий, бессмысленная версия проще, даже если она менее знакома некоторым людям.
В конце концов, многое из этого сводится к удобочитаемости.Вы тратите больше времени на чтение собственного кода, чем на его написание.Любой другой тратит много больше времени на его чтение.Если вы пишете код, который будет простым и читаемым, вы сделаете его намного лучше для всех.Поэтому, если код без точек более читабелен, используйте его.
Но не нужно удалять каждую точку, чтобы, к сожалению, доказать точку.Легко попасть в ловушку, пытаясь сделать все бессмысленным только потому, что вы можете.Мы уже знаем, что это возможно;нам не нужно видеть кровавые подробности.