• записей
    5
  • комментария
    32
  • просмотра
    824

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

konorws

395 просмотров

Добрый день.

Немного истории вот где то года три назад я начал свой путь в работе с 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
Здесь языковая пременная

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

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


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

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

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


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

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

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

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

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

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


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

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

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

 

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

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

 

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

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


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

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

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

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


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

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

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


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

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

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

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

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

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

Войти

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

Войти