@oop_ru

Страница 218 из 785
Sergey
09.05.2017
12:42:06
randomHash()

function randomHash() { return bin2hex(openssl_random_pseudo_bytes(16)); }

если ооочень хочется можно сделать это сервисом

но тут уже надо смотреть на здравый смысл... OCP соблюден, SRP соблюдено

Google
Sergey
09.05.2017
12:43:38
лично я ленивый

Like
09.05.2017
12:46:09
А что такое User ?)

Sergey
09.05.2017
12:46:14
почитай

и не забудь почитать в конце

Like
09.05.2017
12:47:16
Мне это напоминает сущность которая должна предоставлять доступ для работы с базой (таблицей)

почитай
Фигово читается, шея ноет, инфа не воспринимается :(

Sergey
09.05.2017
12:47:53
забудь про базу данных. Представь что у тебя объекты просто вечно живут в оперативке

Like
09.05.2017
12:48:13
Ну тогда лады)

Sergey
09.05.2017
12:57:58
может кто еще хочет подискутировать на тему SRP?

Like
09.05.2017
12:58:10
Серега, иди выпей лучше)

Sergey
09.05.2017
12:58:18
да я вчера уже

а то мне тренироваться объяснять эти штуки)

Like
09.05.2017
12:58:27
Сегодня тоже) Хватит о солиде

Google
Sergey
09.05.2017
12:58:37
никогда не хватит о солиде)

Oleg
09.05.2017
13:02:46
кстати что почитать о солиде ,

??

Like
09.05.2017
13:03:25
кстати что почитать о солиде ,
Agile Software Development, Principles, Patterns, and Practices дяди боба про SOLID

Andrey
09.05.2017
14:30:27
короч меня на большее не хватило, если захочешь можем продолжить спор и рассматривать изменения которые ты предлагаешь)
>> Хотя никто не мешает нам сделать так с самого начала. я про это и говорю, только не "никто не мешает", а "надо сразу делать", потому что пользователь не для этого. Либо название изначально выбрано некорректное

Sergey
09.05.2017
14:31:16
суть в том что в типичном цикле разработки (делаем дела - рефакторим - коммитим) проверка на соответствие принципам SOLID по хорошему должна происходить вот в момент рефакторинга

проблему тут могут быть только с тем что стэп "рефакторим" у многих пропущен

а видеть "на перед" бывает далеко не так просто)

p.s. я не так много проектов видел где есть разделение User и Credentials (или похожее)

Like
09.05.2017
14:35:47
Ну хз У меня один класс который содержит бизнес логику Ну и эта модель независима в целом Там уже в контроллерах юзается так как нужно Поэтому все что с юзером - в одном классе

Like
09.05.2017
14:36:48
где SQL держишь?
У меня через репозитории

Чисто делегатор для eloquent

А реализация в моделях

Sergey
09.05.2017
14:37:06
Чисто делегатор для eloquent
как сохраняешь связи?

я просто хз как это в eloquent организовано, я привык к unit of work

Like
09.05.2017
14:37:29
как сохраняешь связи?
Давай я тебе лучше покажу

Наглядно Так сказать

Google
Sergey
09.05.2017
14:37:42
и плохо себе представляю как без UoW персистенс

Andrey
09.05.2017
14:51:50
с самого начала можно сделать и так, а уже когда рефакторишь (красный - зеленый - рефакторинг) можно уже разделить.
я так и знал, что ты меня троллишь, а не защищаешь такой подход )))) но поспорить я люблю, поэтому меня это устраивает ) вроде в "рефакторинге с использованием шаблонов" Кириевски было написано, что намного проще (если даже не лучше/правильнее) работать с кодом, где все как попало, нет ни одного шаблона и т.д., типа тогда его намного легче приводить к тому виду, который будет оптимальным на данном этапе, т.е. тот же самый "зеленый-рефакторинг" (мне самому нравится этот подход) но опять же: мне не нравится active record (не из-за srp, просто не нравится), но на работе используем его, т.е. я не всегда делаю/использую то, что мне нравится ("больной на голову шаблонами" вряд ли про меня))), и на рефакторинг у нас времени никогда нет (есть код еще из 2010, все руки не доходят, а такой код все копится и копится)

Sergey
09.05.2017
14:52:22
я так и знал, что ты меня троллишь, а не защищаешь такой подход )))) но поспорить я люблю, поэтому меня это устраивает ) вроде в "рефакторинге с использованием шаблонов" Кириевски было написано, что намного проще (если даже не лучше/правильнее) работать с кодом, где все как попало, нет ни одного шаблона и т.д., типа тогда его намного легче приводить к тому виду, который будет оптимальным на данном этапе, т.е. тот же самый "зеленый-рефакторинг" (мне самому нравится этот подход) но опять же: мне не нравится active record (не из-за srp, просто не нравится), но на работе используем его, т.е. я не всегда делаю/использую то, что мне нравится ("больной на голову шаблонами" вряд ли про меня))), и на рефакторинг у нас времени никогда нет (есть код еще из 2010, все руки не доходят, а такой код все копится и копится)
я на самом деле категарически против выноса логики из объектов где им самое место

> нет ни одного шаблона они так и так будут если ты принципы соблюдаешь.

> мне не нравится active record так я ж его и не юзаю) у меня честный data mapper

при active record все усложняется тем что у тебя стэйтом будет модель данных

но объектную модель ты все так же можешь делать

(опять же я так делать не пробовал, я просто по другому не предсталяю себе active record на хоть сколько нибудь большом проекте)

> и на рефакторинг у нас времени никогда нет это быстрее чем проектировать upfront придумывая миллион кейсов которых не будет. Ну то есть проектировать upfront чуть чуть да надо, но надо знать когда остановиться

а на рефакторинг время есть всегда

так же как и на тесты

Sergey
09.05.2017
14:55:16
это все отговорки)

потому как в сумме при рефакторинге и тестах ты за то же время сделаешь как минимум столько же

хотя ощущаться это будет "медленнее"

Andrey
09.05.2017
14:56:24
> мне не нравится active record так я ж его и не юзаю) у меня честный data mapper
я к тому, что "спорить" и "делать" не всегда одно и то же, в конкретном случае я бы вынес аутентификацию, но в другом месте в аналогичной ситуации я бы легко мог и в коде оставить

Sergey
09.05.2017
14:56:25
> (есть код еще из 2010, все руки не доходят, а такой код все копится и копится) принцип бойскаута. Есть лишних 10 минут, напиши тестик или основу для него, вынеси код в отдельный метод...

я вынес в Credentials по итогу

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

Google
Andrey
09.05.2017
14:57:15
ну вот, туда бы и вынес

Sergey
09.05.2017
14:57:20
(с active record я просто данные воспринимаю как тупую структуру которая хранится в объекте с логикй)

ну то есть это не сервис

так как таким объектам нечего делать в контейнере с сервисами

Andrey
09.05.2017
15:03:14
у нас аутсорс своего приложения, кодовая база для кучи клиентов одна с небольшими изменениями, те же логины могут отличаться незначительно (кому просто логина хватит, кому с sms, а кому и гугловские коды подавай дополнительно (забыл название), поэтому либо придется кучу одинаковых user делать с разницей в аутентификации, либо сразу отдельно выносить - выбирать не приходится ))) поэтому я изначально против аутентификации в пользователе

Sergey
09.05.2017
15:04:21
> а кому и гугловские коды подавай дополнительно (забыл название), это все стратегии двухфакторной аутентификации

прикол в том что двухфакторную аутентификацию ты за один раз всеравно не сможешь сделать так что тебе всеравно нужен какой-то слой перед пользователем (или кредами)

и прикол в том что первый стэп двухфакторной аутентификации ничем не отличается от однофакторной

ты всеравно должен сделать сессию, просто с ограниченными правами

в application level логике я ничего плохого не вижу.

Admin
ERROR: S client not available

Sergey
09.05.2017
15:06:39
другой вариант - подтипы. Когда у тебя в одной таблице записи просто мэпятся на разные реализации

но это сложнее да

у меня просто текущий проект с такой же историей

есть ecom платформа и вайт лейблы

каждому подавай какой-нибудь кастом

Артур Евгеньевич
09.05.2017
20:02:48
Парни достаточно ли емкко поисано здесь отличия декоратора от прокси

Декоратор и Заместитель имеют похожие структуры, но разные назначения. Они похожи тем, что оба построены на композиции и делегировании работы другому объекту. Паттерны отличаются тем, что Заместитель сам управляет жизнью сервисного объекта, а обёртывание Декораторов контролируется клиентом.

или есть еще какие то отличия:

Evgeniy
09.05.2017
20:16:28
обычно в декоратор не передают объект которые декорируют

Google
Evgeniy
09.05.2017
20:16:53
хотя это дело вкуса создавать экземпляр в конструкторе

имхо

декаратор просто помимо вызова основного метода может что то вызвать до и после вызова

Evgeniy
09.05.2017
20:24:48
там написано что заместить сам управляет жизнью объекта

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

Sergey
09.05.2017
20:27:54
ну то есть это не декоратор, это херня какая-то

Evgeniy
09.05.2017
20:29:50
это как?
условно можно объект что декорируешь передать в конструкторе

типо внедрение зависимостей все дела и ты такой правильный

Evgeniy
09.05.2017
20:30:39
ну или он может его внутри себя создать

Sergey
09.05.2017
20:30:45
теряется вся суть декоратора и вообще зачем так делать

Evgeniy
09.05.2017
20:30:58
да легко может, просто это не канонично и возможно не правильно

Sergey
09.05.2017
20:31:20
нет, в этом ровным счетом нет никакого смысла

Evgeniy
09.05.2017
20:31:24
но я такое видел))))

Sergey
09.05.2017
20:31:25
представь тест для этой херни

Evgeniy
09.05.2017
20:31:41
я согласен что получится возможно херня)

Sergey
09.05.2017
20:31:42
но я такое видел))))
я тоже много чего видел но просто не называй это "декорацией"

Страница 218 из 785