Является ли передача в полном объекте аля объект разрушения хорошей практикой / имеет последствия для производительности? - PullRequest
0 голосов
/ 08 июня 2019

Какой стиль передачи свойств вы бы предпочли при вызове функции, которая разрушает параметр объекта.Вызываемая функция имеет подпись

function constructDebugLog({
  currentOS,
  originalUserStashState,
  userAgent,
}) { ...

Какой способ вызова функции является более разумным

1

const { currentOS, originalUserStashState, userAgent } = store.getState()
constructDebugLog({ currentOS, originalUserStashState, userAgent })
    .then(resolve)
    .catch(reject)

2

constructDebugLog(store.getState())
    .then(resolve)
    .catch(reject)

Вызов getState() обеспечивает сложный объект, но поскольку принимающая функция разрушает его, есть ли необходимость в объяснении, как сделано в # 1?

1 Ответ

0 голосов
/ 08 июня 2019

Я думаю, что основное отличие здесь заключается в намерении авторов :

1) Вы хотите передать некоторые утерянные свойства в функцию, что все они из одного источника данных - совпадение.

2) Вы передаете состояние вокруг. То, что функция разрушает это, означает, что она получает доступ только к определенным свойствам состояния, но автор предполагал, что объект состояния будет передан.

В этом случае я думаю, что позже применимо, и затем я бы пошел с этой версией (это также делает код немного более читабельным IMO).

Относительно "производительности" и "наилучшей практики":

У вас есть проблемы с производительностью? Если нет, почему ты беспокоишься? Если да, то эти две строки не являются причиной этого.

А «передовой опыт» всегда самоуверен, я бы посчитал обе версии действительными.

...