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

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

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

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

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

Кто прав ?)

13 ответов

9 просмотров

передавать надо в метод размер и файл, т.к. картинка может быть не одна или одна картинка будет преобразована в несколько размеров если передавать через конструктор, то не получиться сервис (класс) преобразования подтянуть через 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
Обычно не покрывают клиентский код юнит тестами, д...

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

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

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

я не магистр хаскеля, но разве не может лейзи тип конвертнуться в не-лейзи запросив вычисление содержимого прям при инициализации?
deadgnom32 λ madao
100
в сях есть множество как в питоне? для удаление дубликатов
Linus
25
читать файл максимально быстро? странный вопрос))
zamtmn
53
тоесть, указав return eax, сгенерируется никому ненужная инструкция mov eax,eax ?
Aiwan \ (•◡•) / _bot
24
How to create an OS in C? what to study?
Linus
18
а зачем этот вопрос для удаления из чата?
Mёdkinson Medvezhkin
63
Всем доброго вечера! Хочу поделиться своим злоключением с человеком, который, как оказалось сюда тоже скидывал свое резюме. Жаль, что я вашу группу не нашел раньше… человек ки...
Роман Ахмедзянов
4
а как бы вылезти из ИО, что то типа IO -> Ether или в какую сторону смотреть ? что то туплю
Fedor
14
Компания Elif ищет менеджера проектов, который будет заниматься поиском и ведением новых проектов. Прежде чем приступить к работе, вам нужно пройти наш недельный курс, где вы ...
Elif
5
Привет, кто может сделать юзербота с апи? Задачи: - создавать группы - создавать каналы - задавать для созданных каналов аватарку или эмоджи, имя группы - добавлять в группы...
Lencore
11
Карта сайта