Как научиться проектировать программы в ооп стиле?

Не могу точно сформулировать вопрос, но мне требуется совет от опытных программистов.
Я занимаюсь программированием на PHP уже несколько лет. Хорошо знаю принципы ООП. Прочитал несколько книжек про паттерны проектирования. Но при этом, когда нужно спроектировать новую систему впадаю в какой-то ступор, как будто мне не хватает какого-то вот одного заветного знания. Начинаешь думать, что можно вот написать и так и этак — в итоге сижу и не могу определиться, какую композицию классов создать. Кажется, что вот у других код получается выразительный, логичный, а у меня что не класс - то нарушение всех принципов ооп и солид. Код в целом выходит, как будто в процедурном стиле.

Посоветуйте может книжку какую-то. Или как правильно проектировать приложения в ооп стиле?
  • Вопрос задан
  • 524 просмотра
Пригласить эксперта
Ответы на вопрос 3
EvgenyMamonov
@EvgenyMamonov
Senior software developer, system architect
Посмотрите в сторону предметно ориентированного проектирования (DDD).

- https://habr.com/ru/post/269589/
- https://habr.com/ru/post/269893/
- https://habr.com/ru/post/267125/

Хорошие книги по этой теме:
- Роберт Мартин "Чистый код Создание, анализ и рефакторинг"
- Роберт Мартин "Чистая архитектура"
- Стив Макконнелл "Совершенный код"

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

Еще очень хороший вариант - найти опытного разработчика и попросить его сделать review вашего кода, чтобы он объяснил вам как вот тут лучше сделать, а как там можно было сделать и почему именно так будет лучше.
Ответ написан
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
тебе не знания не хватает, а понимания и практики. самый простой вариант начать осваивать фреймворки, хорошо бы laminas/simphony, но для начала и phpixie/slimphp хватит.
Ответ написан
@cyberlog
Рефакторить надо, переписывать. Видишь, что можно улучшить - улучшай, переделывай.
Переделал и видишь, что хуже стало - откатывай к старому варианту. И вот так, как из глины вылепливаешь конфетку.
С опытом появляется навык сразу видеть оптимальные варианты и переделки уже не такие глобальные.
Возможно просто еще не достает опыта. Раз ты читал книги, то нужно делать упор на практику.
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы