
Vladimir
01.05.2017
21:23:57
отсюда https://mobile.twitter.com/janiczek/status/859156300357390337

Yung
01.05.2017
21:28:34

Mikhail
01.05.2017
21:42:49

Vladimir
01.05.2017
23:09:26
https://twitter.com/janiczek/status/859179099440414720

Google

Mikhail
01.05.2017
23:10:30
кстати, в 0.19 обещают много интересного https://github.com/elm-lang/projects/blob/master/roadmap.md#how-do-i-make-a-single-page-app

Alex
02.05.2017
08:24:36
да выбор фреймворка не простое дело в наши дни, все обещают много
https://www.youtube.com/watch?v=1CLBANCVHTw

Yumi
02.05.2017
10:09:20

Alex
02.05.2017
10:27:25
это не меняет сути дела)

Aleh
02.05.2017
10:34:36
видал я доки и похуже

Karen
02.05.2017
10:34:55
с доками все норм
просто перемодулизировано
и раскинуто

Aleh
02.05.2017
10:35:09
ну эт да
здесь не поспоришь
от балды как-то там накидано всего)

Google

Aleh
02.05.2017
10:35:52
даже нет единой стратегии именования

Karen
02.05.2017
10:36:02
хз там балда такая должна быть заряженная чтоб такие вещи накидывать

Gleb
02.05.2017
11:35:33
Привет, хотел спросить по тестам, если я тестирую функцию которая возвращает результат другой, то могу ли я в тестах expect данные передавать результат от функции которая будет вызвана внутри тестируемой, или я не должен пользоваться функциями которые вызываются внутри тестируемой?
Например:
const a = (someProp, data) => {
...всяческие условия
return b(data);
}
В одном из тест кейсов могу ли я писать так:
expect(b(data)).toEqual(a...)
Чтобы при изменении b не затрагивать тест а
ну и естественно тестировать b

Aleh
02.05.2017
11:39:08
не стоит так делать

Karen
02.05.2017
11:39:15
тебе надо b индджектить

Aleh
02.05.2017
11:39:18
тебе надо проверить выполнение результата

Karen
02.05.2017
11:40:02
у тебя функция a внутри вызывает какую то функцию b, по хорошему ее надо как аргумент указывать внутри функции а
тогда ты спокойно можешь застабить ее
и проверить выполнение скоупа функции а
то есть смысл в том что ты твоя функция а выполняет что-то при этом используя внешнюю функцию б
ты хочешь проверить правильно ли работает функция а
сама абстракция а
и ты проверяешь ее застабив все внешние зависимости
которые ты потом отдельно поштучно проверяешь в отдельных тест кейсах

Gleb
02.05.2017
11:42:09
Это да, спасибо , но немного уточню, тут речь идет о reducer ,просто там внутри есть функция b она больше даже как util функция идет

Karen
02.05.2017
11:42:10
как-то так

Gleb
02.05.2017
11:42:20
внутри reducer
то есть как обычный редусер (state, action)

Google

Karen
02.05.2017
11:42:45
а это неважно ты сам решаешь насколько грязный твой тест
но в идеале
функция чистая
получила вернула
без сайд эффектов
если тебе надо что-то использовать ты явно инжектишь
если у тебя получается слишком много аргументов
тогда ты разбиваешь функцию на разные маленькие функции

Gleb
02.05.2017
11:43:36
То есть внешний инджект это уже грязно считается ?
внешний не являющийся аргументом имею ввиду

Karen
02.05.2017
11:43:51
каждая из которых имеет разумное кол-во инжектов через аргументы

Gleb
02.05.2017
11:44:11
Спасибо большое!)

Karen
02.05.2017
11:44:42
у такого подхода высокая тестируемость но в реальности народ не пишет
так
потому что никто не хочет принцип сингл респонсибилити реализовывать идеально
среднестатическая функция делаем как минимум 3-4 вещи
каждый if else
это еще один респонсибилити в копилку функции
так что как всегда надо взвешивать вкаждой конкретной ситуации
но моя практика стараться инжектить как можно больше явных зависимостей и функции делить на более мелкие

Google

Karen
02.05.2017
11:46:26
но не совсем мелкие
как-то так
потому что когда совсем мелко и на каждый чих функция оно нечитабельно становится вообще
точнее неподдерживаемо
колл стек уходит в бесконечность

Aleh
02.05.2017
11:52:03
самые норм подходы:
1. количество вариантов ответа "для чего вам использовать эту функцию"
2. сколько ролей(менеджер, начальник по продажам, начальник по кадрам и т.д.) могут запросить требование, которое повлияет на эту функцию

Karen
02.05.2017
11:54:06
между идеал и норм пропасть

Aleh
02.05.2017
11:54:12
идеал не нужен

Karen
02.05.2017
11:54:15
поэтому я и написал что мало кто в идеале так делает
я сам не пишу безифовые функции
все в меру
просто надо иметь в виду
что порождает сложность и мультиответственность
и держать под уздой

Aleh
02.05.2017
11:55:02
безифовые тож такое, был бы другой язык, например с ООП или с ФП норм, писали бы ифы чисто на полиморфизме
иф не порождает ответственность, про мелкие опять же
это связь между coupling и cohesion

Karen
02.05.2017
12:00:39
очень даже порождает потому что контролирует флоу

Aleh
02.05.2017
12:00:51
и?)

Google

Aleh
02.05.2017
12:01:00
ретурн тож контролирует)
и вызов другой функции контролирует

Karen
02.05.2017
12:01:58
не совсем понимаю аналогию
ретурн это конец функции
ифы опредлеяют флоу функции до конца

Aleh
02.05.2017
12:02:34
какая разница между:
if (a) { b() } else { c() }
и:
a.then(b, c)

Karen
02.05.2017
12:02:35
сама функция выполняет одно действие
конкретно здесь никакой разницы
промис чейнинг это тоже контрол флоу

Aleh
02.05.2017
12:05:23
эт не промис
но не суть

Karen
02.05.2017
12:05:35
thenable
любой флоу контрол внутри тела функции который выдает более 1 пути развития есть усложнение и нарушение сингл респонсибилити которое указывает на нужду в делегировании в субфункцию или выведение логики в отдельную функцию
но это в идеале

Aleh
02.05.2017
12:07:20
нет, не указывает
опишите что такое идеал?
и почему это идеал

Karen
02.05.2017
12:07:58
идеал это чистая функция в функцинальном понимании
на каждый инпут стабильный оутпут без сайд эффектов
с единственной ответственностью
unit сложности
максимально делимый