@phpclubru

Страница 438 из 956
Sparrow
13.01.2018
19:40:26
Порог вхождения

Maksim
13.01.2018
19:40:30
хз на счёт лёгкости, но от богомерзких табуляций у меня пригорает :(

так-то да, сложного ничего нету

я ещё и операторы типа else с новой строки пишу... страшный грех :( хуже чревоугодия

Google
Pavel
13.01.2018
19:44:42
Гламур в разработке как он есть.

Maksim
13.01.2018
19:45:18
зачем?
Критику я ждал, примерно, такого плана: а зачем у тебя в EventSourcingService сначала идёт поиск event stream, а только затем (если не найдено) создание нового агрегата. Вот это - критика. А скобки не на той линии - ну такое себе, честно.

dypa
13.01.2018
19:47:39
научись управлять своими ожиданиями, пример который ты привел - это не один час погружения в контекст

Maksim
13.01.2018
19:48:02
да ладно) меня парень за 10 минут вчера на этом впалил)

позавчера, прости

и он был чертовски прав: это тупая идея. Почти всегда event store будет nosql. если взять ту же кассандру, то там запись на порядок быстрее чтения) и лучше отбивать с помощью уникального ключа

dypa
13.01.2018
19:50:38
возможно для парня это тема достаточно близка.

Maksim
13.01.2018
19:52:49
ну да, он тоже любитель обмазаться сервис-басами

эта хренотень вся не очень близка к пхпшникам. Её надо развернуть и попробовать покидаться командами. Там докер не зря на скотч прилеплен

Adel
13.01.2018
19:58:33
ну смотря каким. вон фесор вроде тоже пхпшник :)

Maksim
13.01.2018
19:59:33
таких единицы. Это аще справочник ходячий)

dypa
13.01.2018
19:59:40
https://github.com/mmasiukevich/service-bus/blob/master/src/MessageBus/MessageBusBuilder.php#L93 я ожидал что зависимость будет кофигурироваться явно через конфиг в котором по умолчанию будет NullLogger

Maksim
13.01.2018
20:00:38
да, соглашусь. Это здесь лишнее. осталось со времён, когда саги были отдельным компонентом. Спасибо

Google
dypa
13.01.2018
20:00:56
тут возможно только 2 типа? может ли появиться третий? https://github.com/mmasiukevich/service-bus/blob/master/src/MessageBus/MessageBusBuilder.php#L154

Maksim
13.01.2018
20:01:44
ещё есть тип query, который завернули на текущем этапе

Adel
13.01.2018
20:02:09
мне не важно согласишься ты или нет - я не на экзамене
да брось :) согласие это ж типа спасиба. чо уж ты

dypa
13.01.2018
20:03:05
ещё есть тип query, который завернули на текущем этапе
я бы описал дефолтное поведение в котором бы кидал exception, но возможно тут это лишнее

Maksim
13.01.2018
20:03:24
не, у query поведение совсем иное

пока просто не реализовывал. Надо сильно думать, как его сделать правильно

другого значения там быть сейчас не может

dypa
13.01.2018
20:05:25
да брось :) согласие это ж типа спасиба. чо уж ты
цель codereview - попытка сделать код лучше и послушать отличное от твоего мнение.

https://github.com/mmasiukevich/service-bus/blob/master/src/MessageBus/MessageBusBuilder.php#L243 apply работает с обьектом? обьекты в пхп передаются же по ссылке?

Maksim
13.01.2018
20:07:49
apply возвращает новый объект

задача - immutable объект

dypa
13.01.2018
20:12:38
меня смущает присваивание в цикле immutable - тогда я бы ожил увидеть в коде clone и слово immutable в имени класса

Maksim
13.01.2018
20:13:59
если бы я ещё immutable в постфикс писал, Адель бы меня на кол насадил) но идея как-то это обозначить имеет право на жизнь

Adel
13.01.2018
20:14:07
ImmutableSetterlessAndPrettyCoolTask

Maksim
13.01.2018
20:14:42
ну я думаю это веяние дейттайма. Что бы явно их разделить

Adel
13.01.2018
20:14:57
а еще этот таск написан на PHP. это тоже надо обозначить

Maksim
13.01.2018
20:15:45
не, простого коммента будет более, чем достаточно, мне кажется. постфикс immutable не по пср)

dypa
13.01.2018
20:18:36
при каких условиях сработает это условие? https://github.com/mmasiukevich/service-bus/blob/master/src/MessageBus/MessageBusBuilder.php#L227

Maksim
13.01.2018
20:20:54
кажется, в дело пошёл phpstan. не при каких. И $messageNamespace там никогда не будет неймспейсом. Опять-таки, наследие. Сейчас прибью. Спасибо

Google
dypa
13.01.2018
20:22:57
не, я даже git clone не делал. просто читаю сверху вниз

есть языковые конструкции которые обычно в коде не встречаются - за них глаз и зацепляется

Maksim
13.01.2018
20:24:31
свежий взгляд - всегда хорошо. поправил там по списку из того, что скидывал

dypa
13.01.2018
20:27:19
кстати конструкторы у тебя private, а __clone приватным почему не сделан? на это есть причины?

Adel
13.01.2018
20:27:47
а какие причины делать приватным кон?

клон

Maksim
13.01.2018
20:27:57
clone немного про другое

dypa
13.01.2018
20:28:53
я не знаю логики, поэтому и спрашиваю

Maksim
13.01.2018
20:29:24
у меня не было цели запретить клонирование объектов. Оно мне никак не мешает. А вот увеличить гибкость кода за счёт именованных конструкторов - почему нет.

dypa
13.01.2018
20:29:42
а какие причины делать приватным кон?
например ты хочешь сделать singleton :)

про именованные конструкторы - я не спорю что они нужны, просто если один конструктор - то я предпочел бы видеть средства языка, а вот если уже 2 способа создать обьект - то имеет смысл. наиболее похожий пример - класс с 1 методом - количество абстракций вырастает и получается что сложнее анализировать код в голове (тк количество обьектов и связей сильно растет).

Maksim
13.01.2018
20:35:04
тут тонкая грань на самом деле. Помимо всего прочего, тебе нужно ещё и обеспечить консистентность восприятия

есть дтошки, где он нафиг не нужен. Но если часть будет через new object(), а часть через именованые - это чушь.

dypa
13.01.2018
20:36:46
https://github.com/mmasiukevich/service-bus/blob/master/src/Transport/RabbitMqTransport/RabbitMqConsumer.php#L86 побить бы на методы

Maksim
13.01.2018
20:37:26
это да, боль. Но я в целом побью эту промисовую срань при первой же возможности, заменив на корутины

Adel
13.01.2018
20:37:46
promise hell то какой

Maksim
13.01.2018
20:37:55
он самый

dypa
13.01.2018
20:37:58
js на php ?

Maksim
13.01.2018
20:38:41
как со временем полегче будет, я промисы выпилю нафиг.

там самое забавное в другом: на методы-то 1 чёрт особо не разбить. Никак не разбить

Google
dypa
13.01.2018
20:42:38
https://github.com/mmasiukevich/service-bus/blob/master/src/Transport/RabbitMqTransport/RabbitMqTransport.php#L95 а если я захочу в другом месте обрабатывать сигналы?

Maksim
13.01.2018
20:43:04
в плане в другом месте?

dypa
13.01.2018
20:43:23
https://github.com/mmasiukevich/service-bus/blob/master/src/Transport/RabbitMqTransport/RabbitMqTransport.php#L157 о_О

Maksim
13.01.2018
20:43:50
и что тут удивляет? демон остановлен

dypa
13.01.2018
20:44:30
меня удивляет что этот механизм спрятан в самых "глубинах кода"

ты где то стартуешь демона, так вот рядом бы и хотелось видеть как ты его останавливаешь

Maksim
13.01.2018
20:45:31
это нормально. Никто, кроме транспортного уровня, не знает ни про твой эвент луп, ни про конкретный транспорт

всё приложение - демон

https://github.com/mmasiukevich/service-bus-demo/blob/master/testDaemon.php

dypa
13.01.2018
20:49:19
у тебя не в 1 месте используется __destruct, у меня нет уверенности что exit - будет корректно отработан в таком случае, поддержка сигналов может быть вынесена на самый верх и передана как зависимость к нижним уровням

я могу каким то образом передать свой паблишер? https://github.com/mmasiukevich/service-bus/blob/master/src/Transport/RabbitMqTransport/RabbitMqTransport.php#L291 почему хочется что то создавать в getter?

Maksim
13.01.2018
20:50:40
сюда, нет

dypa
13.01.2018
20:52:40
https://github.com/mmasiukevich/service-bus/blob/master/src/Transport/RabbitMqTransport/RabbitMqTransportConfig.php#L23 обажаю магические константы :) еще больше обажаю патчить чужие билиотеки, я надеюсь эту библиотеку не требуется патчить чтобы присоединиться к другому порту кролика?

Maksim
13.01.2018
20:53:03
во избежание ненужных мыслей представь, что у тебя в виде транспорта используется mysql select'om ты получаешь задачи, insert'om отправляешь обратно. Здесь зависимость прямая и обоснованная контекстом

Pavel
13.01.2018
20:53:53
Использование кучи private напоминает мне yii1, где хрен что переопределишь, даже если очень нужно. Только в помойку выкинуть ?

Pavel
13.01.2018
20:54:25
Используйте protected вместо private в библиотеках, пнятненько

Maksim
13.01.2018
20:54:30
protected'ом можно себе ноги отстрелить

нет, в библиотеках как раз не принято protected использовать

Google
Pavel
13.01.2018
20:55:10
А можно и не отстрелить а ловко изменить функциональность и быстро решить задачу.

Ну или страдать и покрывать матами того кто понасовал приватов

Maksim
13.01.2018
20:56:12
это как раз основы этого вашего ооп. удивлён, что даже мерзкий юи так делает, но да ладно.

Pavel
13.01.2018
20:57:30
это как раз основы этого вашего ооп. удивлён, что даже мерзкий юи так делает, но да ладно.
Он потому и мерзкий, что так делает. А кое-кто везде тупо расставляет private даже не понимая что это контекстуальный инструмент

Maksim
13.01.2018
20:58:00
да нет) это ты не просто не понимаешь, почему private)

Pavel
13.01.2018
20:58:01
Но пока об этом не расскажет какой нибудь окрамиус на 40 минутном докладе, люди сами не дойдут

Надо тогда репозиторий сделать private, а то вдруг кто-то себе ногу отстрелит ;)

Maksim
13.01.2018
21:00:54
надо просто понимать к чему ведут protected свойства, или protected методы. Особенно во фреймворках или библиотеках. У тебя есть публичный апи, его и используй

Pavel
13.01.2018
21:03:13
protected в yii1 привел бы к тому что удалось бы запилить туда нормальный di контейнер и фреймворк зажил бы новой жизнью.

А так - тоже можно запилить, просто переписав пару десятков тысяч строк кода.

Maksim
13.01.2018
21:03:57
di контейнер как-то улучшает характеристики фреймворка, который ведь забит синглтонами?) серьёзно?)

Pavel
13.01.2018
21:04:46
Да, поверх можно построить целый новый дивный мир, не переписывая 200cloc легаси проекта

Maksim
13.01.2018
21:04:48
да и как dic поможет я лично понятия не имею. тебе никто не мешает для клиентской части кода его использовать. Зачем он тебе вбитый ногами в фреймворк?

я не вижу связи, если честно.

Dmitry
13.01.2018
21:06:01
паш, протектед во фреймворке - это апи. со всем вытекающим BC

Maksim
13.01.2018
21:06:51
по хорошему, там аще все классы final должны быть, что бы отбить все наркоманские фантазии. Код фреймворка самодостаточен

а все влажные мечты программиста покрываются композицией

Pavel
13.01.2018
21:07:32
Ну понятно что самодостаточен, вот он никому уже и не нужен )

Maksim
13.01.2018
21:08:08
он не нужен потому, что сам фреймворк донный. Но, повторюсь, если тебе так хотелось DIC, что мешало его для своего кода прикрутить?

Pavel
13.01.2018
21:08:34
паш, протектед во фреймворке - это апи. со всем вытекающим BC
Да не, это точно не yii1-way. Они не особо следили за BC

Страница 438 из 956