Loyd
bluebird Promise.props?
Vladimir
это какой то бесмысленный сахар
Алекс
вместо data[1] data[0] самодокументируемые поля. На bluebird посмотрю. Начинал с vow, а теперь просто нативные промисы юзаю
Vladimir
Есть пример, когда это нужно? в твоем пример это будет с массивом точно также выглядеть
Loyd
Из яндекса штоли?
Vitaliy
Из яндекса штоли?
Грубо, но отлично! 😂
Vladimir
Кто, я?
Vitaliy
Ох, сколько в Я шаблонизаторов, о которых общественности даже ещё не известно..
Loyd
Чего только один yate стоит )
Vitaliy
А teya уже в ходу?
Алекс
За bluebird спасибо. У меня было убеждение, коли node поддерживает промисы из коробки, то библиотеки типа q, vow или bluebird не нужны, т.к. в моём понимании они были полифилами. Но птица покрывает похоже все случаи, в которых мне не хватало встроенных возможностей.
Алекс
хз про шаблонизаторы, мы только bh и bemhtml (bem-xjst) используем в команде. и по моему пониманию, bh — это legacy
Loyd
как и bemhtml =)
Vladimir
bluebird не нужен
Vladimir
точнее
Vladimir
Алекс
не троли)
Vladimir
не, это серьезно
Алекс
а кк же Promise.props?
Vladimir
всего несколько полезных вещей
Vladimir
ну я не вижу кейсов, когда это нужно
Алекс
ну тогда продолжу юзать свой велосипед))
Vladimir
полезно - это all с ограничением concurrency
Vladimir
но тоже пишетсяв ~ 40 строк
Алекс
:+1:
Vitaliy
Все пишется :) А с либой появляется общий язык, в этом ценность
Vladimir
cancelation - полезно в теории, но бесползно в виду полного отсутствия interoperability
Loyd
Как легко тебя переубедить
Vladimir
не в тестах счастье
Vladimir
уже нельзя три строки без тестов написать
Nikita
нельзя
Loyd
Используй co с генераторами уже, там есть .props нормальный: let {poem, comments} = yield {poem: fetch('/foo'), comments: fetch('/bar')} Хотя лучше так: let [poem, comments] = yield [fetch('/foo'), fetch('/bar')]
Nikita
в смысле я прямо много написал кода без тестов. И мучался всегда с этим кодом
Loyd
Это да
Nikita
если код нужно поддерживать - на него нужно писать тесты.
Loyd
Это же не rust какой-нибудь, тут наебнуться может абсолютно всё.
Vladimir
открою секрет - в node.js нет юнит тестов
Алекс
хочу уже asynс/await юзать, но не получается с babel подружить.
Nikita
https://github.com/nodejs/node/tree/master/test м?)
Andrey
bluebird не нужен
так скорость же и потребление памяти?
Vladimir
это не юнит тесты
Vladimir
> @tom910 так скорость же и потребление памяти? а она нужна кому-то?
Vladimir
то есть кому-то нужна, но не всем
Loyd
Но я бы пока всё-таки юзал генераторы без async-await, уж слишком трансляторы сейчас не ок
Nikita
это не юнит тесты
а я где-то писал именно юнит-тесты?
Loyd
Эм, как не юнит?
Vladimir
речь о том, что много чего не протестировано, код просто пишется и все
Loyd
Вот я открыл, допустим, https://github.com/nodejs/node/blob/master/test/parallel/test-event-emitter-add-listeners.js
Loyd
Чистой воды юниттест
Nikita
ну, вызываешь не 1 функцию, а целый эндпоинт дергаешь, например)
Vladimir
нет, это функциональные тесты
Loyd
Это не так
Nikita
ну ты плохой пример приводишь) вот в linux в ядре, вроде, нет тестов)
Nikita
есть внешние проекты
Vitaliy
Расскажите уже, кто на стикере? Лицо вроде знакомое. Какой-то отечественный деятель? А то я как-то все из зарубежных источников потребляю..
Nikita
но отсутствие тестов у кого-то совершенно не значит, что не надо их писать на свой код) Особенно базовый, типо работы с промисами
Nikita
Vladimir
если ты пишешь софт для космических кораблей - о хороший довож
Vladimir
если нет - то там другая экономика
Nikita
угу, я не спорю, что не на все тесты надо писать. Я считаю что на базовые вещи, типо утилит, работы с промисами и тд - маст хэв
Nikita
то есть на контроллер - не обязательно. На роутер - обязательно
Vladimir
wut?
Nikita
app.get('/users', (req, res) => res.json(User.fetchAll())) - вот сюда не обязательно тест. А на app.get - обязательно
Vladimir
тестировать app.get или что? не понял
Nikita
блин) ну миддлвар роутера из экспресса)
Nikita
и еще. тесты зачастую нужны не для только что написанного кода, а в будущем. Когда кто-то, кто может быть и не до конца понимает код, или не учитывает всех особенностей, должен добавить какую-то фичу. Очень полезно в этот момент проверить, не сломан ли старый код
Vladimir
в том и смысл, что в трехстрочники не нужно добавлять фичи
Nikita
function filter(text: string): string { return text.replace(/[-+() ]/g, ''); }
Nikita
ну вот функция) я в ней забыл /g флаг. Нашел тестом
Vladimir
Ну это явно функция, имеющая бизнес смысл
Vladimir
в таком случае и тесты должны быть и комментарии, и нормальное название
Nikita
это маленький хелпер для другой функции, на которую и тесты и дока есть. Но я про то что даже в однострочнике может быть ошибка
Nikita
вот кстати интересный вопрос) вы на регулярки тесты пишите?
Vladimir
нет, регулярки - это просто деталь реализации