Как научиться писать такой ООП код?

У меня было тестовое задание.
Суть: есть url по которому список url картинок, проходим их все, ресайзим и выводим на экран.

Я уже не на том уровне, что бы писать функцию, которая отработает сверху вниз. Я бы создал один класс и по его методам раскидал логику - т.е. сделал бы методы download, resize, output, etc.

Вот как сделал его один гуру https://github.com/urakozz/tests/blob/master/getIm...

Он создал 3 класса и везде использовал итераторы, агрегаторы, SplFileObject, короче классы и паттерны для всего, чего можно.

Как этому научиться?
  • Вопрос задан
  • 4274 просмотра
Пригласить эксперта
Ответы на вопрос 12
@Copperfield
Android dude
Мне в школе физрук говорил:"Чтобы много подтягиваться - нужно много подтягиваться".
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
Мэтт Зандстра - PHP. Объекты, шаблоны и методики программирования
Ответ написан
@dmitryKovalskiy
программист средней руки
Ну начать следует с перечитывания собственных вопросов. Далее перейти на книжку "Head First Паттерны проектирования" просто чтобы понять что это и зачем придумано. Более тщательно(раз 5) перечитать главу где пишут что не надо применять паттерны ради применения паттернов. А дальше вперед к практике.
Ответ написан
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Вот честное слово, много паттернов + ооп != хороший код.
За код типа
$this->initBatch();
        $this->attachHandlers();
        $this->executeHandlers();
        $this->getContent();
        $this->detachHandlers();

я бы медленно убивал.
Ответ написан
trevoga_su
@trevoga_su
в этом коде нет ничего сверхъестественного
пишите больше и все придет с опытом
Ответ написан
Комментировать
viktorvsk
@viktorvsk
Не делать ООП ради ООП, а решать каждую задачу оптимальным образом
Не считать сложный код - хорошим кодом: код по ссылке не выдержит вообще никакой критики.
Читать https://refactoring.guru/ и всякие термины SOLID, но без преждевременной оптимизации

Не просто что-то делать, а постоянно усложнять задачи (не путать с усложнением способа решения задачи), задаваясь вопросом, можно ли решить ее проще.
Ответ написан
Комментировать
Если интересен код с ооп и паттернами ради ооп и паттернов - взгляните на https://github.com/EnterpriseQualityCoding/FizzBuz... и сравните с тем, что получится, если решать задачу в лоб. Потом спросите себя, а нафига козе баян? И задавайте этот вопрос себе постоянно, чтобы научиться находить баланс между простотой и гибкостью.
По книгам: Зандстра, потом PoEAA Фаулера, потом DDD Эванса. Читаем, применяем, думаем "нафига", и так до просветления :)
Удачи)
Ответ написан
Комментировать
Acuna
@Acuna
Заполнил свой профиль
Коллеги вверху правильно ответили, что не стоит так усложнять код кроме разве что академического интереса. Задание по вашей ссылке можно было бы уместить в одну простую функцию и не городить из этого целый движок. Проблема не в ООП, он очень нужный и классный (серьезно), однако проблема в том, что его часто суют где только можно, но где это совершенно не нужно. Можно и гвозди унитазом забивать, только зачем?
Ответ написан
Комментировать
mmmaaak
@mmmaaak
Читайте и практикуйтесь, что тут еще посоветовать. Волшебной пилюли, которую съешь и всему научишься, не существует
Ответ написан
Комментировать
okwinza
@okwinza
PHP Developer
Изучите приведенный вами пример.
Прогуглите непонятные вам места(генераторы, SplFileObject, ArrayIterator и тп)
Почитайте про встроенные интерфейсы php.net/manual/ru/reserved.interfaces.php
Для каждого из списка ответьте на вопрос "Зачем?" и "Для чего?"

Теперь попробуйте написать что-нибудь для себя, используя эти штуки.

Умение с ходу правильно разделять код на классы придет с опытом.
Ответ написан
Комментировать
Ashlst
@Ashlst
Фанат эстетики и красивых решений.
Добрый день.
Изучайте паттерны проектирования,работу с SPL,построение архитектуры приложения.
Самое главное - пишите код...много кода)
Ответ написан
Комментировать
ruFelix
@ruFelix
Предсказание будущего по руке, таро, кофе.
Все заумные подходы к написанию кода нужны для того что бы его можно было долго писать, быстрее рефакторить и долго-долго поддерживать и т.п.

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

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

Соответственно ответ на сам вопрос: начните решать задачи где написание такого кода жизненно необходимо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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