[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Давайте пофлудим на тему паттернов? =)
McLotos
Я тут недавно увлекся DDD и узнал много интереснейших паттернов, которые позволяют сильно урезать количество вложенных друг в друга if'ов ;)
Конечно сейчас редко возникают ситуации, когда открываешь код, а там полотно условий с вложенными условиями и циклами или еще лучше когда это полотно вложено в парочку foreach
Но все-же иногда, когда находясь в состоянии потока пишешь код, на следующий день с него офигиваешь. Как вы обходите подобные ситуации? Как избавляетесь от циклов и условий?
Я нашел один красивый паттерн, но он подходит не под все случаи - State Machine. Этот паттерн позволяет например управлять статусами заказов, при этом без кода типа
if ($status == 'new)' {

}
elseif($status == 'paid') {

}
elseif ....

Но для его работы приходится писать много классов (по сути каждый статус это отдельный класс., что кстати очень удобно. Нужен новый статус - создай новый класс и не трогай остальной код)
Вообще кстати заметил тенденцию того что применение любого паттерна приводит к увеличению количества кода. А вы что об этом думаете? Кто-нибудь ставил себе цель написать проект не используя условия и циклы? (разумеется мы не учитываем циклы внутри стандартных функций языка)
Я вот как-то писал свой фреймворк с навязчивой идеей исключить из кода все echo и print, что-то даже с этого получилось, ни одного echo в коде не осталось.
Сейчас вот активно сражаюсь с условиями в своем коде, конечно кроме тех случаев, когда условие явялется логически необходимым, но и там чаще обхожусь одноуровневой тернаркой, хотя даже она иногда подбешивает :lol:

_____________
программирование - инструмент для решения конкретных задач, любая попытка спроектировать что-то универсальное приведет к провалу.©paul85
В любом случае тебе прийдётся пройти путь изобретения велосипеда, который прошли другие, только причиной твоего изобретения будет непонимание принципов работы велосипеда изобретённого другими людьми.©SlavaFr
jQuery это попытка использовать АН-225 для перевозки зубочистки
sergeiss
Вангую большой холивар smile.gif

Я так на это смотрю. Паттерн ради того, чтобы использовать паттерн - это не правильно! Удобство разработки, читаемость кода (да еще когда он работает smile.gif - вот то, к чему надо стремиться. И если если какой-то паттерн этому помогает, то тогда его надо использовать.
Иначе может получиться "Hello world!" из нескольких десятков файлов.

_____________
* Хэлп по PHP
* Описалово по JavaScript
* Хэлп и СУБД для PostgreSQL

* Обучаю PHP, JS, вёрстке. Интерактивно и качественно. За разумные деньги.

* "накапливаю умение телепатии" (С) и "гуглю за ваш счет" (С)

user posted image
Эли4ка
так пример то можно показать под какую-нибудь? А то гуглить не хочется laugh.gif
ApuktaChehov
Когда выполняется какой-то процесс, и его выполнение зависит от какого-то количества условий, так или иначе эти условия проверять придется. Вопрос в том как и где.

Например, в Symfony есть Workflow компонент, который позволяет переводить какие-то сущности в определенные состояния по определенным правилам. Выглядит это красиво.

И да, там туча кода. Но это лучше, чем в каждом управляющем контроллере копипастить тьму условий для того, что бы выполнить нужное действие.

Но это к слову о конечном автомате. А если автор пишет про то, что наплодил условий и сам же в них запутался, нужно отложить задачу, лечь поспать/побухать/погулять/ и т.д., а после написать более оптимальное решение. wink.gif

_____________
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.