Перейти к содержанию
  • записей
    5
  • комментария
    32
  • просмотра
    1 122

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

konorws

846 просмотров

Добрый день.

Немного истории вот где то года три назад я начал свой путь в работе с 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% задач что ставлятса к кодингу доходит редко и економит просто уйму времени. С версткой аналогично создаеш блок и подтягиваеш в нужное место и живеш и радуешся жизни.

 

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


 



21 Комментарий


Рекомендуемые комментарии

git clone
И вперед..

А где умные слова типа dry

 

Поделиться этим комментарием


Ссылка на комментарий

контрол с котрол в наше фсе (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 повторов и нужно вчитаться в код, чтоб понять где для чего формируется ссылка в каждом из повторов.

Поделиться этим комментарием


Ссылка на комментарий

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

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

 

Поделиться этим комментарием


Ссылка на комментарий
В 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 2

Поделиться этим комментарием


Ссылка на комментарий
8 часов назад, rozario888 сказал:

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

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

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

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

Поделиться этим комментарием


Ссылка на комментарий
21 час назад, florapraktik сказал:

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

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

 

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

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

 

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

Поделиться этим комментарием


Ссылка на комментарий

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

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

Поделиться этим комментарием


Ссылка на комментарий

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

  • +1 1

Поделиться этим комментарием


Ссылка на комментарий

Для публикации сообщений создайте учётную запись или авторизуйтесь

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

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    Ни одного зарегистрированного пользователя не просматривает данную страницу

×

Важная информация

На нашем сайте используются файлы cookie и происходит обработка некоторых персональных данных пользователей, чтобы улучшить пользовательский интерфейс. Чтобы узнать для чего и какие персональные данные мы обрабатываем перейдите по ссылке. Если Вы нажмете «Я даю согласие», это означает, что Вы понимаете и принимаете все условия, указанные в этом Уведомлении о Конфиденциальности.