Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...
  • записів
    6
  • коментарів
    128
  • переглядів
    4 240

Взгляд на Opencart после Magento и других продвинутых систем


konorws

27 597 переглядів

Добрый день.

Немного истории вот где то года три назад я начал свой путь в работе с Opencart. Скажем так полюбил я Opencart всем сердцем.

Но в один солнечный день мне пришел лист о том что я прошел собеседование в относительно большую IT кампанию. И с того дня мой взгляд на хороший код изменился... 

Вот не так давно меня попросили немного доработать функционал на OC. Мне не сложно в принципе вот я и приступил к работе. Я сидел и говорил себе Боже как я раньше с этим работал.

 

Ну теперь давайте я вам попробую описать то что меня возмутило.

 

1. Удобство разработки и интеграция в IDE

Да когда я работал с Sublime Text все было вроде гуд. Но уже полгода работаю через PhpStorm (PS. Лицензия есть даже на домашнем ПК а не только на работе).

При запуске сразу получаем кучу предупреждений. Давайте взглянем на простой класс http://joxi.ru/52alLM0UGzO1Om

Причин тут две:
1) Отсутствие PhpDoc

2) Упрощенная структура самой CMS

Ну если добавить PHPDoc то большую часть проблем это реши. 
Зачем нужен PHPDoc ??
Я напишу коротко если будет интересно загуглите.

1) Это читабельность кода
2) Автокомплит и информация о методах на лету  http://joxi.ru/brRZkROHQveeLr как не крути сразу видно что и как надо передавать тому или другому методу или то что он возвращает. Или же увидеть ошибку на моменте написания кода а не запуска.

 

2) Это наверное бесит меня на данный момент больше всего. Это дублирования кода.

Хотя Опенкарт и как бы MVC но он нарушает один из принципов MVC потому что с дублирование кода тут просто беда.

Давайте посмотрим на один из контроллеров админ панели. http://joxi.ru/nAyKdw3tXz1oVm 
И это один из множества примеров. который есть в каждом файле я молчу о генерации $url вот пример из файла файла покупателя. Этот кусок кода встереатся в одном файле 9 раз. ????? 
Давайте посчитаем: 9 * ~40 строк = ~360 строчек кода которые можно отрефакторить к 20 максимум и будет один метод для всех файлах а в контролере это будет одна строка вместо 40  

			$url = '';

			if (isset($this->request->get['filter_name'])) {
				$url .= '&filter_name=' . urlencode(html_entity_decode($this->request->get['filter_name'], ENT_QUOTES, 'UTF-8'));
			}

			if (isset($this->request->get['filter_email'])) {
				$url .= '&filter_email=' . urlencode(html_entity_decode($this->request->get['filter_email'], ENT_QUOTES, 'UTF-8'));
			}

			if (isset($this->request->get['filter_customer_group_id'])) {
				$url .= '&filter_customer_group_id=' . $this->request->get['filter_customer_group_id'];
			}

			if (isset($this->request->get['filter_status'])) {
				$url .= '&filter_status=' . $this->request->get['filter_status'];
			}

			if (isset($this->request->get['filter_approved'])) {
				$url .= '&filter_approved=' . $this->request->get['filter_approved'];
			}

			if (isset($this->request->get['filter_ip'])) {
				$url .= '&filter_ip=' . $this->request->get['filter_ip'];
			}

			if (isset($this->request->get['filter_date_added'])) {
				$url .= '&filter_date_added=' . $this->request->get['filter_date_added'];
			}

			if (isset($this->request->get['sort'])) {
				$url .= '&sort=' . $this->request->get['sort'];
			}

			if (isset($this->request->get['order'])) {
				$url .= '&order=' . $this->request->get['order'];
			}

			if (isset($this->request->get['page'])) {
				$url .= '&page=' . $this->request->get['page'];
			}

А теперь представте волшебство Если бы можна было бы так

$url = $this->url->saveUrlParametrs('filter_name', 'filter_email', 'filter_customer_group_id');

И подобных ситуаций уйма. Про дублирование верстки я молчу вообще. Чтоб добавить чтото к товару нада єто продлублировать в 100500 файлах.
В мадженте к примеру страница редактирования или список в админке создается с помощью двох XML файлов где просто описиваются конфигурации и єтими конфигами можна решить около 75% задач что ставлятса к кодингу доходит редко и економит просто уйму времени. С версткой аналогично создаеш блок и подтягиваеш в нужное место и живеш и радуешся жизни.

 

Ну думал написать по больше но с временем не сложилось. Может потом добавлю что то.


 

118 коментарів


Recommended Comments



контрол с котрол в наше фсе (cmd еще) - модифицируйте готовое ( я бы точно не стал прыгать с ветки на ветку в полноценном проекте)

как вы могли полюбить опенкарт я не понял

он был, есть и будет лучше

Надіслати
14 часов назад, ashap сказал:

контрол с котрол в наше фсе (cmd еще) - модифицируйте готовое ( я бы точно не стал прыгать с ветки на ветку в полноценном проекте)

как вы могли полюбить опенкарт я не понял

он был, есть и будет лучше

Видите меня смущает то что уже как бы 3-я Версия вышла но нет вообще никаких сдвигов в этом плане и это грустно. Единственое что было сделано это загрузка шаблонов теперь не в 5 строк в а одну)))) Такое ощущение что все просто пофиг. Рефакторинг? не не слышал .

 

Надіслати
3 минуты назад, konorws сказал:

Единственое что было сделано

Да?
А инициализация языковых переменных. Не? не слышал?
 

 

4 минуты назад, konorws сказал:

это загрузка шаблонов

2.3. - не, не слышал?

Надіслати
16 минут назад, chukcha сказал:

Да?
А инициализация языковых переменных. Не? не слышал?
 

 

2.3. - не, не слышал?

Да слышал. но это как то вообще не решает главных проблем. Да сделать небольшую печеньку это круто но как то особо не радует с такими темпами мы получим адекватный код к 10 версии ? или как ? 

Надіслати

Вы куда-то торопитесь?
Я? нет
Это мне напомнило одну статейку
почему я не буду работать с опенкарт,
Так там были приведены все ваши аргументы

И есть там ответ от Даниеля, и не один..

Код опенкрата  - для чайников, чтобы он не разбирался в хитросплетениях ооп методов

Здесь url
Здесь языковая пременная

А если ты разработчик, то тебе никто не мешает делать свой код так, как ты мыслишь

  • +1 5
Надіслати
3 часа назад, chukcha сказал:

Это мне напомнило одну статейку
почему я не буду работать с опенкарт,
Так там были приведены все ваши аргументы

И есть там ответ от Даниеля, и не один..

не подскажите адресок где почитать? или хоть как загуглить, а то все как то ни о том нахожу

Надіслати
3 часа назад, chukcha сказал:

Код опенкрата  - для чайников, чтобы он не разбирался в хитросплетениях ооп методов
А если ты разработчик, то тебе никто не мешает делать свой код так, как ты мыслишь

Ну тут есть две стороны медали. Потому что эти чайники на этом учатся и потом идут далее. Как минимум код который идет с коробки должен быть примером а не учить мягко говоря "говнокодить". 

А отмазка о том что что код должен быть понятен я не говорю о том что вводить сложную архитектуру иди делать 20к обьектов скласами на все случаии жизни но хотябы убрать дублирование безмысленого кода. Просто проблема в том что переучиватся довольно трубдно. Вот хорошо что у меня ментор был который каждый комит проверял и обяснял где и что можно улучшить. 

Самый яркий пример это плагин Автоматическая обработка прайс листов.
Когда я открыл модельку  данного иодуля  сказать что я Аху*л это ничего не сказать.  22 000 строк в 10-15 методах ? Как такой код можна поддерживать или разширать ?
100500 вложеностей. Я 3 дня убил на то чтобы дописать простую функцию наценок. А все почему? потомучто из коробки идут такие же примеры

Надіслати
4 часа назад, chukcha сказал:

Код опенкрата  - для чайников, чтобы он не разбирался в хитросплетениях ооп методов

В результате имеем трёхколёсный велосипед, на котором люди пытаются проехать Тур де Франс.

 

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

Я уже много раз говорил: примитивность != простота, а ОК именно примитивный, а не простой. В плане простоты как раз местами всё совсем плохо и именно из-за лапши. Например, формирование ссылок в контроллерах (пример в первом посте): такой лапши в контроллере может быть по 5 повторов и нужно вчитаться в код, чтоб понять где для чего формируется ссылка в каждом из повторов.

  • +1 1
Надіслати

Так и в итоге варианты какие? Какая платформа хорошая или решения?

Про любую почитай, везде свои проблемы. Просто здесь, скорее всего, они проще и дешевле в решении.

 

Надіслати
В 08.03.2018 в 15:05, konorws сказал:


Когда я открыл модельку  данного иодуля  сказать что я Аху*л это ничего не сказать.  22 000 строк в 10-15 методах ? 
А все почему? 

Может, умышленно запутывают в качестве мероприятия по защите от пиратства и усилению монетизации?

 

Цитата

Как минимум код который идет с коробки должен быть примером а не учить мягко говоря "говнокодить". 

Сколько стоит час работы Настоящего Специалиста?

Говнокодер стОит в пять раз дешевле = много дешёвых модулей и много готового функционала = много магазинов для бедных стартаперов = много продаж дополнений, модулей, шаблонов = прибыль Даниеля. Идея в том, что низкий порог вхождения (возможность говнокодить) делает систему популярной.

Как бы Вы интегрировали Магено с Новой Поштой? Есть готовый модуль?

Змінено користувачем florapraktik
Надіслати
9 часов назад, rozario888 сказал:

Так и в итоге варианты какие? Какая платформа хорошая или решения?

Про любую почитай, везде свои проблемы. Просто здесь, скорее всего, они проще и дешевле в решении.

 

Все зависит от задачи есть задачи для которых я и сейчас использую опенкарт. И да везде свои проблемы

Надіслати
3 минуты назад, florapraktik сказал:

Может, умышленно запутывают в качестве мероприятия по защите от пиратства и усилению монетизации?

Очень сомниваюсь для это у них есть специальный модуль закодирвоаный приложен для лицензий. 

4 минуты назад, florapraktik сказал:

Сколько стоит час работы Настоящего Специалиста?

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

Как бы Вы интегрировали Магено с Новой Поштой? Есть готовый модуль?

Насчет часа работы тут дело по разному обстоит.  К примеру у нас в компании на проекте на котором я сейчас работаю клиет платит 100$ за час работы. Ну есть по разному у меня знакомый работает то получает 50$ в час но у него там немного другая ситуация.

Насчет новой почты все зависит от того что именно вы хотите интегрировать. НЕу в большенстве случаев я думаю что нада делать одельное разширение.
Да модуль у меня есть но фактически он пренадлежит компании а не мне хотя автор я))))  По\тому поделится им я не смогу

Надіслати
18 минут назад, konorws сказал:

Насчет часа работы тут дело по разному обстоит. К примеру у нас в компании на проекте на котором я сейчас работаю клиет платит 100$ за час работы. Ну есть по разному у меня знакомый работает то получает 50$ в час но у него там немного другая ситуация.

 

Это был риторический вопрос, смысл которого, что Опенкарт даёт работу людям, готовым работать за 20$ или, даже, за 10, потому что гораздо проще найти людей, готовых платить 10$, чем людей, согласных платить 100.

ОС не стремиться конкурировать с Магенто напрямую, он скорее хочет расширить рынок за счёт доступности для гомнокодеров. Ну, мне так кажется)))

 

Цитата

Да модуль у меня есть но фактически он пренадлежит компании а не мне хотя автор я))))  По\тому поделится им я не смогу

Этот вопрос тоже риторический:) Я как-то решил найти модуль интеграции с НП для Престашопа и не нашёл. Точнее говоря, нашёл, но какой-то подозрительный. И я предположил, что с Магенто ситуация вряд-ли лучше.

Ваш модуль "знает" все отделения НП? Он связан с личным кабинетом НП? Создаст накладную со штрих-кодом одним кликом, в том числе на вторые и третие места?

 

Надіслати
13 часов назад, konorws сказал:

  К примеру у нас в компании на проекте на котором я сейчас работаю клиет платит 100$ за час работы. Ну есть по разному у меня знакомый работает то получает 50$ в час но у него там немного другая ситуация.

Что за проект такой за такие деньги? Или там прослоек в несколько рук))

По 100$ за час обычно берут BI-конторы, т.к. их инструменты могут бизнес на новый уровень вывести и там для .

Битрикс в среднем в районе 40-50$, если говорить о сайте и работами по нему.

Змінено користувачем rozario888
Надіслати

offtop

Семидесятилетний пациент пришел к сексопатологу с жалобой на половую слабость.
   - И как часто Вы теперь имеете секс?
   - Ну-у... раз в две-три недели.
   - Ну что ж, в Вашем возрасте это прекрасно.
   - Да, но мой сосед, который куда старше меня говорит что спит с женой каждую ночь.
   - И Вы говорите! Кто Вам мешает?

  • +1 4
Надіслати
8 часов назад, rozario888 сказал:

Что за проект такой за такие деньги? Или там прослоек в несколько рук))

По 100$ за час обычно берут BI-конторы, т.к. их инструменты могут бизнес на новый уровень вывести и там для .

Битрикс в среднем в районе 40-50$, если говорить о сайте и работами по нему.

Да у нас большая компания и клиенты у которых доходы в год с не мение чем 6 нулями в конце это в $

Надіслати
21 час назад, florapraktik сказал:

Это был риторический вопрос, смысл которого, что Опенкарт даёт работу людям, готовым работать за 20$ или, даже, за 10, потому что гораздо проще найти людей, готовых платить 10$, чем людей, согласных платить 100.

ОС не стремиться конкурировать с Магенто напрямую, он скорее хочет расширить рынок за счёт доступности для гомнокодеров. Ну, мне так кажется)))

 

Этот вопрос тоже риторический:) Я как-то решил найти модуль интеграции с НП для Престашопа и не нашёл. Точнее говоря, нашёл, но какой-то подозрительный. И я предположил, что с Магенто ситуация вряд-ли лучше.

Ваш модуль "знает" все отделения НП? Он связан с личным кабинетом НП? Создаст накладную со штрих-кодом одним кликом, в том числе на вторые и третие места?

 

Видите в чем проблема тут вопрос не в попитке конкуренции а в Примитивности кода. Я не прошу строить ахренено большую систему с наворотами и так далее но убрать эту примитивность. Ведь говнокодеры так и не перестатнуть говнокодить пока им не заставиш или не покажеш как правильно. 

Надіслати

А на какой платформе нет говнокодеров или говнокода? Или сама платформа блещет. 

Просто я и сам из крупного российского холдинга, который уже несколько лет ударяет по проектам. Везде такие комменты 

Надіслати

Проведите рефакторинг статьи. Подключите библиотеку под названием "пунктуация" и используйте функцию под названием "запятые". Ваше творение нечитабельно. 

  • +1 2
Надіслати

Так от ОС не требуется таких же наворотов как от Мадженто. Это инструменты разных классов для разных задач. Мадженто профессиональная экосистема для создания функционально сложных проектов с длительным жизненным циклом, а ОС это простенькая CMS для небольших проектов, простеньких стартапов и т.п.

Надіслати
2 часа назад, EVMedvedev сказал:

Так от ОС не требуется таких же наворотов как от Мадженто. Это инструменты разных классов для разных задач. Мадженто профессиональная экосистема для создания функционально сложных проектов с длительным жизненным циклом, а ОС это простенькая CMS для небольших проектов, простеньких стартапов и т.п.

<its="true">ебали мы в рот ваши мадженты</its>

простите за мой французский

Надіслати
В 08.03.2018 в 10:49, konorws сказал:

Видите меня смущает то что уже как бы 3-я Версия вышла но нет вообще никаких сдвигов в этом плане и это грустно. Единственое что было сделано это загрузка шаблонов теперь не в 5 строк в а одну)))) Такое ощущение что все просто пофиг. Рефакторинг? не не слышал .

Вот сюда лей всё и вся ему в ухи
https://github.com/opencart/opencart

 

ска.. брюс ли вышпилет все ваши мадженты и ворпресы с битриксами
photo_2019-04-29_20-33-44.thumb.jpg.ec00bec2dfa76a171363a0372700be23.jpg

Надіслати
В 10.03.2018 в 20:19, rozario888 сказал:

А на какой платформе нет говнокодеров или говнокода? Или сама платформа блещет. 

Просто я и сам из крупного российского холдинга, который уже несколько лет ударяет по проектам. Везде такие комменты 

 

Г...но кодеры есть везде, просто их уровень разный. В ОС их особенно много потому что движок прост и с ним начинают работать в первую очередь люди с невысоким уровнем интеллекта, если судить по комментам того же ashap. А таких на этом форуме хватает. На форумах мадженто или Престашоп я такого не встречал. Более сложный движок требует больше ума, что и проявляется в том числе и в публикуемых комментариях.

Надіслати

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку
×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.