169 похожих чатов

Коллеги, доброго вечера ) Подскажите возник спор с товарищем по

тому как правильнее оформлять код...рассудите)

Вот у меня есть который генерирует картинку с помощью GD, у него в конструкторе 3 интерфейса которые необходимы для нормального создания того что нужно

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

Кто прав ?)

13 ответов

43 просмотра

передавать надо в метод размер и файл, т.к. картинка может быть не одна или одна картинка будет преобразована в несколько размеров если передавать через конструктор, то не получиться сервис (класс) преобразования подтянуть через DI, выставив нужные имплементации интерфейсов да и хранения состояния это еще то гггг

E-V. Автор вопроса

Ну к состоянию не всегда согласен, иногда полезно В целом то что ты пишешь - ровно то, что говорю я) Тут ключевой аргумент что всегда когда надо будет создать картинку, мы через new должны создавать объекты, а у меня на new не очень хорошая реакция, даже ввиду невозможности тестирования и моков

E V.
Ну к состоянию не всегда согласен, иногда полезно ...

где будет new? нет тут нигде new, у тебя будет ImageResizeSerice, которы зависит от трех интерфейсов, имплементация которых также у тебя есть и это тоже сервисные классы, ты в ServiceContainer прописываешь инициализациию, привязаваешь к интерфейсам имплементации и сервис ImageResizeService подтягиваешь в методе контролера где тут new?

E-V. Автор вопроса
Egor Gruzdev
где будет new? нет тут нигде new, у тебя будет Im...

Я так то с тобой согласен) Я про то, что если передавать размеры в конструктор, то при вызове сервиса надо будет явно передать реализации через new

E V.
Я так то с тобой согласен) Я про то, что если пере...

если не обязательно, если вы все таки решили передавать через контрутор, то можно использовать контейнер для создания класс, т.е. app()->make(ImageResizeService::class, ['width' => 100, 'height' => 100]); т.е. параметры $width и $height вы передаете, а все остальное будет создано автоматически

Скажи ему, что Артём из чата смотрит на него как Ленин на буржуазию

E-V. Автор вопроса
Egor Gruzdev
если не обязательно, если вы все таки решили перед...

Я знаю что так можно)) Но на дистанции какой профит ?)

E V.
Я так то с тобой согласен) Я про то, что если пере...

Почему такое отношение к New, чем он вас так пугает, как по мне его не следует боятся например в слое инфраструктуры или внутри бизнес логики если не использовать внешние зависимости, это приведёт к связанности, но эта связанность будет нормальной если соблюдать принцип Единственной ответственности

E-V. Автор вопроса
Артём
Скажи ему, что Артём из чата смотрит на него как Л...

Я так же ) Написал суда, чтобы провалидировать, может я че-то не понимаю ) Потому что там 100+ лет опыта и "я лучше знаю"))

E-V. Автор вопроса
Evgenii Glechikov
Почему такое отношение к New, чем он вас так пугае...

Потомк что через new мы тащим кусок кода, который уже не будет покрыт юнит тестом и мы свяжемся с чем то, что выпиливать потом если придётся то будет очень больно )

E V.
Потомк что через new мы тащим кусок кода, который ...

Обычно не покрывают клиентский код юнит тестами, для него есть другие тесты. И если сделать код сильно отвязанным то тоже получишь антипаттерн. Если не ошибаюсь то прям в доках Di не рекомендуют злоупотреблять

E-V. Автор вопроса
Evgenii Glechikov
Обычно не покрывают клиентский код юнит тестами, д...

По сути каждый сервис, который как то взаиможествует с внешними сервисами является клиентом)) Смотри, мне нужна стоимость заказа, я иду в репортаж и вытаскиваю все товары, клиентский код для репо - это мой сумматор стоимости каждой позиции, неужто я не должен покрыть его тестом ?

Похожие вопросы

Обсуждают сегодня

Господа, а что сейчас вообще с рынком труда на делфи происходит? Какова ситуация?
Rꙮman Yankꙮvsky
29
А вообще, что может смущать в самой Julia - бы сказал, что нет единого стандартного подхода по многим моментам, поэтому многое выглядит как "хаки" и произвол. Короче говоря, с...
Viktor G.
2
30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Карта сайта