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