Олег Казакевич
702 повідомлення
#15 років тому
Вот вам и "простой" вопрос по ООП !

"Дайте один программный код на рассмотрение десяти программистам, и они
придут к вам, каждый со своим списком из десяти проблем".


Еще раз повторю - за свою практику я почти не встречал ООП в чистом виде.
Рабочий код в большинстве случаев жесткий и неприглядный, архитектурные решения далеко не очевидны (вспомнить те же паттерны для
графов или метапрограммирования - товарам и корзинам до них как до луны).
Да и эффективность иногда важнее корректности.

Что если вся логика каркаса, разработанного к тому же не вами, опирается на сущность товара, а не корзины, и менеджерам в ней просто нет места ?
Что если существуют несколько других классов (не товаров), пригодных для отправки в корзину и в будущем планируется пополнить их ряды ?
Что если надлежит закодировать разные типы корзин, не связанных наследованием (снова пример плохого проектирования, но мы живем в реальном мире) ?

tvv заглянул в будущее такого кода, я - в его настоящее.
Подытожу - любое решение имеет право на жизнь, каким бы корявым оно не казалось.
Вокруг полно подобных примеров, возьмите хотя бы свою любимую операционную систему.
Андрей Халецкий
3562 повідомлення
#15 років тому
Цитата ("okman"):
Цитата ("SmartDesign"):
Не очень понятно как специфика проекта может заставить применять плохие приемы в проектировании. Хотелось бы увидеть хотя бы один живой пример.


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


Цитата ("okman"):
Могу привести еще примеры, если хотите - уж их авторы, казалось бы, должны на программировании "собаку съесть".
Убежден, что если бы это разрабатывали люди с таким, как у tvv, пониманием, наша жизнь была бы гораздо приятнее...
Я говорил не про пимеры плохого проектирования, а про примеры когда такое проектирование необходимо, именно намекая на то, что правльные подходы - хорошо, неправильные плохо. Без оговорок.
Роман Б.
42 повідомлення
#15 років тому
Спасибо всем, так как вообще не известно будущие развитие приложения, решил, что буду использовать классы менеджеров...

которые будут
- переносить товар с центральных складов на склады торговых точек..
- добавлять товар в корзину
может будет еще менеджер который будет
- собирать товар из продуктов (ингредиентов) (я про составные товары)... уменьшать количество ингредиентов на складе и прибавлять количество составных товаров на складе...
Роман Б.
42 повідомлення
#15 років тому
Цитата ("sukebe"):


Оформление (HTML) - отдельно
Расчет стоимости как товаров, так и всей покупки (бывают скидки, зависящие от суммы покупки) - отдельно.
Чекаут, реферальная система - все отдельно.


Скажите пожалуйста,
Как ваша корзина рассчитывает стоимость, зависящую от суммы общей покупки?
Как подключается реферальная система?

В заранее, спасибо.
Андрей Халецкий
3562 повідомлення
#15 років тому
Цитата ("gisttin"):
Скажите пожалуйста,
Как ваша корзина рассчитывает стоимость, зависящую от суммы общей покупки?
Как подключается реферальная система?
Сумма товаров в корзине не зависит от скидки.
Все скидки, проценты и т.д. считаются при оформлении заказа.
Дмитрий П.
441 повідомлення
#15 років тому
Цитата ("gisttin"):
Цитата ("sukebe"):
Оформление (HTML) - отдельно
Расчет стоимости как товаров, так и всей покупки (бывают скидки, зависящие от суммы покупки) - отдельно.
Чекаут, реферальная система - все отдельно.

Скажите пожалуйста,
Как ваша корзина рассчитывает стоимость, зависящую от суммы общей покупки?


А она ее не считает. Корзина отдает контроллеру стоимость без учета этой скидки. Я "корзинный" метод для определения стоимости использую только для того, чтобы потом результат вывести в виджете типа "В вашей корзин ... товаров на сумму ... рублей".
Все остальные скидки, как написал SmartDesign, считаются при оформлении заказа. Часто за это отвечает отдельный класс, т.к. логика может быть очень даже извращенной.

Цитата ("gisttin"):
Как подключается реферальная система?

Реферальная система живет независимо от корзины.
В реферальную систему передается идентификатор оформленного заказа, его окончательная стоимость и идентификатор партнера. Ни один из этих параметров корзиной не вычисляется.


ps. Иногда мне кажется, что некоторые программисты отождествляют такие сущности как "Корзина" и "Заказ". Признавайтесь, есть тут такие?