
Sergey
03.05.2018
20:19:13

code4aman
03.05.2018
20:28:04
по скорости исполнения думаю snapshot test >= unit test

Sergey
03.05.2018
20:29:18
ну то есть я знаю только о хренях в jest для фронта + в довольно удобный подход который удобен при рефакторинге и сравнении работы двух имплементаций разных но это не быстрее юнитов

Google

Дмитрий
03.05.2018
20:31:16
Нет тестов нет проблем
Удобно)

Sergey
03.05.2018
20:31:35

Дмитрий
03.05.2018
20:32:15
К сожалению property по волшебству сами не появляются

Sergey
03.05.2018
20:32:34
слушай, а не знаешь, может уже есть подборка паттернов багоделов?
ну мол распространенные паттерны приводящие к багам, интересная ж тема
и под паттернами я тут больше про поведение человека)

Дмитрий
03.05.2018
20:33:49
Хмм
Интересная постановка вопроса
Не, подборку такую вряд ли видел)

Igor
03.05.2018
20:53:52

Дмитрий
03.05.2018
20:54:08
Ох лол

Google

Дмитрий
03.05.2018
20:54:18
А ты пробовал их юзать?))
Почему то никто не задумывается, что кроме решения проблем, новые концепции так же несут и новые проблемы
И в данном случае только успевай ладошки подставлять

Mykola
03.05.2018
21:25:40
тесты и типы - это из разной оперы, ребят

Дмитрий
03.05.2018
21:25:48
?

Mykola
03.05.2018
21:26:47
типы позволяют писать корректный код, но они не позволяют проверить логику
код может прекрасно компилиться, но не выполнять поставленную задачу
если уж вы хотите тесты, но чтоб в математику - курите формальные методы
https://en.wikipedia.org/wiki/Formal_methods

Дмитрий
03.05.2018
21:29:22
Вот как раз с formal proofs и начинаются все эти dependent types
Просто они требуются значительно меньшему количеству людей, чем они сами думают)

Mykola
03.05.2018
21:56:15
тут есть большая разница
что именно ты доказываешь
что твоя программа не зависнет, скажем, или не упадет - это теория типов туда сюда
а что твоя программа делает именно то, что надо - это формальные методы
например, если ты пишешь программу для обработки какого-то IoT с кнопками, то как ты на типах проверишь, что все варианты их нажатий учёл?

Дмитрий
03.05.2018
22:02:11

Igor
04.05.2018
16:39:13
https://www.youtube.com/watch?v=VDfX44fZoMc
Посмотрел этот доклад и еще раз убедился что проблемы тестирования в ООП от:
- Микса эффектов и логики, вроде вызова "репозиториев" (лезущих на сервер) из бизнес-логики (какое-там уж там reference-transparenty)
- Размазывания стейта по куче объектов в памяти
- Неиспользование всей выразительности типов (нет даже типов с явной nullability, а потом тесты на NPE пишут)
те все проблеммы в самом ООП ?♀️

Pavel
04.05.2018
17:08:40

Sergey
04.05.2018
17:27:14

Google


Charles
04.05.2018
18:37:34
ребят, прошу помогите плз, я уже не понимаю как правильно. В общем - есть сервис значит нотификаций. там немного TS ```public async create(data: any, templateCode: string): Promise<Notification> {```вот в этот data: any могут приходить разные модели из доменной области и я нифига не понимаю как подружить одно с другим. То ли проверять тупо на instanceof, то ли на уровне интерфейсов это сделать, то ли вообще в итоге вынести отдельный аргумент под тип
эммммм, почему телега не отформатировала кусок с исходником как исходник?...
короч есть сервис нотификаций - он берет доменную модель и имя шаблона и компилит из этого мессагу. в нем же будут мапперы которые понимают как конкретную доменную модель переводить в "единый" формат для того чтобы сервис нотификаций дальше работал как надо (это тоже спорно но сейчас не суть)
ну и короч на этом все и остановилось(
во, понял, как можно не с помощью instanceof (условно) понять какая именно модель мне приходит? и что было бы правильно
просто если брать instanceof мне придется тогда все возможные сущности предметной области выносить например в ENUM в сервисах но это вообще нихрена не гут, достаточно лишь какой-то новый класс добавить
примеры моделей доменной области - order, user, booking + нотификации могут вообще быть не завязаны ни на одной модели, а быть сами по себе (типа есть мануальная опция отправки, решит маркетолог что всем надо еб*нуть промокод потому что сейчас лето, и вызовем сразу create но в первом аргументе будет null)
ладно, я заткнулся и жду когда старожилы ответят
я один в пятницу вечеру работаю или у меня прокся в телеге тормозит?....


f4rt~
04.05.2018
18:51:25
ты время видел?

Charles
04.05.2018
18:52:31
видел, тут говорили типа в пятницу вброс делаешь и все ок))))
ну рили меня эта проблема мучает уже 6 часов и я не знаю что делать, куда еще спрашивать как ни в этот чат?...

Mykola
04.05.2018
19:22:30
блин, столько букв, а я пьян

Charles
04.05.2018
19:32:10
да я тож)
но суть от этого не меняется

Sergey
04.05.2018
21:06:15


Roman
04.05.2018
21:11:07

Charles
04.05.2018
21:11:40
блин тоже верно, и как тогда быть?

Google

Charles
04.05.2018
21:11:55
там конечно нет компиляции в полном смысле, но так или иначе
я хочу избавится от фабрик и фабричных методов, там надо на кончиков пальцев все сделать чтоб можно было если что перейти на какие-то не ООП вещи ваще
забудь про new()

Roman
04.05.2018
21:13:48

Charles
04.05.2018
21:14:26
ну как тебе сказать) как показывает практика только в ооп фабрики херачат

Roman
04.05.2018
21:16:20

Charles
04.05.2018
21:16:34
а то ж
да, блин, там тоже есть фабрики, там тоже есть патерны - если понимать как их делать в той парадигме - но в моем случае что делать-то?
и какого хера вообще в этом чате все спят в пт вечером в 0.20 или это блажь

Sergey
04.05.2018
21:41:26

Roman
04.05.2018
21:49:26

Sergey
04.05.2018
21:49:59

Roman
04.05.2018
21:54:09
ммм.... я хз для чего ты делаешь instanceof
Я не делаю) В C# (мой основной язык) хотя бы статическая типизация, там можно и без этого обойтись. Просто как то столкнулся с этой штукой в тайпскрипте и запомнил как она себя ведёт. Человек спросил - я рассказал что знал по теме.

Sergey
04.05.2018
21:57:28
p.s. писал и на шарпах и на тайпскрипте - не вижу разницы что там надо instanceof а там не надо

Roman
04.05.2018
21:59:05

Sergey
04.05.2018
21:59:48
если я правильно помню
разница только в выборе кейвордов

Google

Roman
04.05.2018
22:00:22
А вот GetType в том же C# юзаю активно, чтобы метаданные о типе через рефлекшон выковыривать

Sergey
04.05.2018
22:00:23
и да в шарпах это тоже рантаймовая штука

Roman
04.05.2018
22:00:56
CQRS все дела

Sergey
04.05.2018
22:01:20
CQRS не про шины и не про хэндлеры ну да ладно(

Roman
04.05.2018
22:01:45
Чтобы ручками транзакции не открывать, логи не писать, вот это всё

Sergey
04.05.2018
22:01:52

Roman
04.05.2018
22:02:07
Оно довольно просто реализуется, когда у тебя не класс на трилион методов, а по классу на отдельную операцию.
Накидал атрибутов, оно в рантайме, при запуске приложения сборочки посканило, в IoC контейнере что надо - порегало.
Что то чем больше я пишу код, тем меньше я хочу его писать.

Sergey
04.05.2018
22:09:34

Roman
04.05.2018
22:10:23

Sergey
04.05.2018
22:10:38

Roman
04.05.2018
22:10:53

Sergey
04.05.2018
22:11:01
webassembly, хоть весь CLR запускай

Roman
04.05.2018
22:11:08
Оно свирепела что, но худо бедно работает
Но там траблы есть, что стек кучей эмулировать приходится