
Sergey
04.07.2017
22:00:25
просто подправить сгенерированные
заодно люди смогут инглиш учить
потому что есть мысль что перевод сделает больше плохого)

Forgetable
04.07.2017
22:01:03
Кстати, да. На самом деле, сейчас субтитры невероятно хорошо на английском генерятся, я недавно забыл выключить и удивился

Google

f4rt~
04.07.2017
22:01:08
Речь Мартина сложно переводить, имхо

Sergey
04.07.2017
22:01:26
лучше этого как по мне ничего нет

Sergei
04.07.2017
22:02:51

Sergey
04.07.2017
22:08:06
антипаттерн же - это когда у тебя сервис локатор позволяет вытащить вообще любую зависимость
ну то есть у тебя есть "контейнер" и ты из него что-то достаешь.
вот это типа не очень хорошо
а если у тебя локаторы на каждый тип свои - то тогда как бы и норм


Sergei
04.07.2017
22:13:04
вот это типа не очень хорошо
Ну допустим этот локатор инжектится в конструктор, а потом класс вытягивает из него свои зависимости, это плохо
Мало того что в класс, если он правильный и соответствует high cohesion принципу инжектится вообще что то непонятное, т.к. еще то что инжектится может и не иметь внутри того что нужно этому классу т.к. контракт не определён. Сервис локатор позволяет вытащить любую зависимость, т.е. любой инстанс любого класса. Что то вроде умного оператора new.
Сервис локатор это DI контейнер на выворот

Google

Sergey
04.07.2017
22:14:44
а ты почитай
сервис локатор не совсем так должен работать если что
> соответствует high cohesion принципу
тут вопрос в coupling а не в cohesion

Sergei
04.07.2017
22:18:07

Sergey
04.07.2017
22:18:40
чего ты к кохижену привязался? ты не знаешь хороший он или плохой тут
оно тут вообще н причем
MovieImpl не привязан к сервис локатору
там есть жирный абзац
Service Locator vs Dependency Injection
читай его если хочешь
tl;dr - представь что ты попал на 10 лет назад и нормальных контейнеров зависимостей мало

Evgeniy
04.07.2017
22:22:50
сергей vs сергей
я вообще заметил сколько людей столько и мнений)

Sergey
04.07.2017
22:23:43

Sergei
04.07.2017
22:26:04
Service Locator vs Dependency Injection
Ну так я всё правильно написал, класс имеет зависимость на локатор The key difference is that with a Service Locator every user of a service has a dependency to the locator.
With service locator the application class asks for it explicitly by a message to the locator. With injection there is no explicit request, the service appears in the application class - hence the inversion of control.
т.е. всё верно, классу которому нужен какой либо сервис вообще не зачем знать о локаторе. И если бы это был один класс, этот локатор будет в каждом классе которому нужны будут зависимости.

Sergey
04.07.2017
22:41:19
но если будет по локатору на тип - то не страшно
другой вопрос что сегодня в этом не то что бы много смысла

Sergei
04.07.2017
22:44:03
но если будет по локатору на тип - то не страшно
Всё равно как то хреново, если классу нужно 3 зависимости то лучше их в конструкторе передать чем локатор, если больше то может стоит рефакторить класс, но это нужен конкретный пример чтобы решать.

Google

Sergey
04.07.2017
22:44:26
представь что внезапно не существует ни одного контейнера зависимостей
и у тебя выбор - сервис локаторы, фабрики или писать свой DI контейнер

Sergei
04.07.2017
22:45:13

Sergey
04.07.2017
22:45:37
с точки зрения сложность реализации service locator очень простая штука
и в былые времена приходилось выбирать) сейчас ты можешь просто заюзать удобный DI контейнер с автосвязыванием и компиляцией оного
еще возможный кейс сегодня для SL - это рефакторинг какого-нибудь дикого легаси
как промедуточный этап, тупо что бы снизить связанность хотя бы

Evgeniy
04.07.2017
22:51:54
ну хз можно простую штуку сделать сложной)
и никто не поймет)

Sergey
04.07.2017
22:52:18

Evgeniy
04.07.2017
22:52:19
но вообще да согласен сейчас в том же пхп полно всяких реализаций контейнеров

Sergey
04.07.2017
22:53:27
на самом деле их не то что бы много. штуки 4-5 толковых и интересных. Все остальное - калька. Если брать другие языки - ситуация схожая. Для Js вон до сих пор ничего нет.

Igor
04.07.2017
22:53:55
Ето(легаси) - как раз таки подходящий клиент для SL, так как он поддерживает точечное внедрение а DI нет

Evgeniy
04.07.2017
22:55:05
о я сегодня по стримил видео на тему наследование композиция, агрегация
есть желание по унижать, в пхп)
там мое имхо)

Sergey
04.07.2017
22:55:32
завтра гляну
меня сейчас больше волнует вопрос - мне нужны задачки на тему тестирования

Google

Sergey
04.07.2017
22:56:01
ну мол что бы люди как-то прочувствовали юнит тесты
что-то более приближенное к реальности

Evgeniy
04.07.2017
22:56:30
ну не юнит тестами едины
не стоит на них зацикливаться
есть и другие а задачки это рефакторинг

Sergey
04.07.2017
22:57:01
зацикливаться никто не планирует, но первый уровень пирамиды тестирования надо покрыть

Evgeniy
04.07.2017
22:57:07
начинаешь ценить тесты в момент рефакторинга

Sergey
04.07.2017
22:57:16
и если интеграционные тесты писать изи-бризи, то с юнитами у людей проблемы

Evgeniy
04.07.2017
22:57:23
твой 1 уровень это юнит тесты?

Sergey
04.07.2017
22:57:33

Admin
ERROR: S client not available

Sergey
04.07.2017
22:57:48
юнит тесты -> компонентные тесты -> интеграционные -> e2e

Evgeniy
04.07.2017
22:57:54
ну я к тому что если проект есть, то начинать с автотестов сложновато

Sergei
04.07.2017
22:58:07

Sergey
04.07.2017
22:58:08

Evgeniy
04.07.2017
22:58:10
с автотестов в виде юнитов

Sergey
04.07.2017
22:58:17

Evgeniy
04.07.2017
22:58:25
я к тому что проект проще покрывать приемочными
и потом только впихивать юнит

Sergey
04.07.2017
22:58:33
проще != лучше

Google

Sergei
04.07.2017
22:58:40

Sergey
04.07.2017
22:58:41
мне нужны примеры... ну типа задачки
мол "давайте по быстрому напишем функционал заказа такси в убер"

Андрэ
04.07.2017
22:59:30
НОрм задачка

Sergey
04.07.2017
23:00:05
и потом только впихивать юнит
идея в том что юнит тесты хороши тем что заставляют разработчиков больше внимания уделять таким мелочам как декомпозиция

Sergei
04.07.2017
23:00:20

Sergey
04.07.2017
23:00:42
как раз на декомпозицию

Андрэ
04.07.2017
23:01:31
Мне было сложнее, так как у нас ни убера, ни яндекс.такси. Я чот даже не очень представляю как там вглядить функционал заказа)
В смысле - постановка задачи именно так смутила бы)

Sergey
04.07.2017
23:02:02
ну предметную область и логику я объясню тем кто не каждый день на уберах разъезжает

Evgeniy
04.07.2017
23:02:14
а уже от туда норм декомпозиция

Sergey
04.07.2017
23:02:34
ну то есть как по мне это все побочные эффекты
основная идея - смотреть на код с точки зрения клиентского кода
количество зависимостей - это просто неудобно
идея же в проектировании контракта

Sergei
04.07.2017
23:04:32
юнит тесты заставляют контролить зависимости
юнит тесты это часть tdd процесса, т.е. разработки направляемой тестированием. Tdd не даёт писать плохой код, по крайней мере подсказывает что что то идёт не так когда тесты становится трудно писать.

Evgeniy
04.07.2017
23:04:34
не количество

Sergey
04.07.2017
23:04:49