Есть ли существенная разница в производительности между explain-data
и valid?
.
Например, у меня есть этот код
(let [is-valid? (spec/valid? ::SpecitySpec the-map)
_ (when-not is-valid?
(throw (ex-info "the-map doesn't match spec"
{:explain-data (spec/explain-data ::SpecitySpec the-map)})))])
В случае счастливого пути, тогда он будет работать только valid?
.
Хотя, для краткости, я бы предпочел:
(let [explain-data (spec/explain-data ::SpecitySpec the-map)
_ (when explain-data
(throw (ex-info "the-map doesn't match spec"
{:explain-data explain-data}))
Однако, если производительность увеличится до explain-data
, то я думаю, что Первый пример будет лучшим.