AmberV
23.09.2014 - 15:00
Цитата |
Самая главная проблема самописных фреймворком отсутвие поддержки как таковой, притом изменения в фреймворе при правке бага могут затронуть весь твой проект, а обычные баги уже давно пофикшены в популярных фреймворках |
Интересно, что вы называете "отсутствием поддержки". И давайте пример бага, который может затронуть весь проект. Потому что в по-хорошему спроектированной системе баги живут в классах, а наружу вылазит только интерфейс.
Цитата |
Самая главная проблема самописных фреймворком отсутвие поддержки как таковой, притом изменения в фреймворе при правке бага могут затронуть весь твой проект, а обычные баги уже давно пофикшены в популярных фреймворках |
Я об этом уже писал. Я посмотрел варианты, почитал сравнения и т.д. и т.п., и исходя из своих критериев решил, что они не подходят мне.
Цитата |
а по качеству кода скажу полное говно, в моделе обращение к request, никакого управления зависимостями, смешение ответственностей у классов и тд |
Интересные замечания. Скажите, а где еще обращаться к входным данным, как не в модели? А какое управление зависимостями вы хотели бы видеть? Здесь специально разработанный инструмент решает конкретную задачу. Вот взять для примера ваше тело. Там есть руки, ноги, печень, сердце, голова и т.д. Они работают в связке и зависят друг от друга.
То же самое про смешение ответственности.
В общем, пожалуйста, давайте примеры. Где конкретно плохо, почему это плохо, и как будет хорошо.
AmberV
23.09.2014 - 15:13
И еще вопрос. А какой фреймворк не ограничивает свободу в выборе БД? Потому как я не раз видел сильную привязку к БД типа SQL (если так корректно говорить).
bestxp
23.09.2014 - 15:38
модель не должна знать о внешнем мире ничего ( данные в нее должен передать контроллер ) получив из нужного места ( консоль параметры или http query )
отсутвие поддержки это и есть отсутвие поддержки ( в случае какого-то непонятного поведения никто не подскажет из сообщества ) и в случае необходимости доработки тебе самому придется сидеть и колупать код фреймворка вместо того что бы взять готовый компонент или посмотреть решение в сети так как 90% всего решено
исходя из твоих примеров в поиске тебя забанили что бы говорить о том что ты искал и не нашел
Отсутвие стандартов программирования ( PSR ) стандарты ( camelCase именование, использование пространств имен), а на счет моего тела всеми зависимостями и моим телом управляет мозг ( так и в продукте твоем должен быть такой мозг ( выбирай или DI контейнер или СервисЛокатор) )
Далее слать заголовки из моделей ;( где такому учат?
Смешение ответственностей в модели
Высокая связаннасть кода ( много зависимостей в коде из которых потом будет куча проблем ) Те же Request в конструкторе модели ( хе хе )
AmberV
23.09.2014 - 16:01
Цитата |
модель не должна знать о внешнем мире ничего ( данные в нее должен передать контроллер ) получив из нужного места ( консоль параметры или http query ) |
Собственно, для этой цели и имеется Request, в который ложится то, что нужно.
Цитата |
отсутвие поддержки это и есть отсутвие поддержки ( в случае какого-то непонятного поведения никто не подскажет из сообщества ) и в случае необходимости доработки тебе самому придется сидеть и колупать код фреймворка вместо того что бы взять готовый компонент или посмотреть решение в сети так как 90% всего решено |
Пока что не могу представить ни одной проблемы, которая не решалась бы с помощью гугла.
Цитата |
Отсутвие стандартов программирования ( PSR ) стандарты ( camelCase именование, использование пространств имен) |
Как раз вполне есть. camelCase именно и используется. Исключение - в ajaxовых моделях - сделано умышленно. Пространства имен - на данном этапе не вижу нужды. Кроме того, я не откидаю вероятность, что в будущем нужно будет все переписать "с нуля", поскольку так будет легче, чем рефакторить. Но до такого будущего еще нужно дожить. А главная задача нынешнего кода - пройти первую фазу жизни стартапа. Сделать то, что работает, и делает то, что нужно. Собственно, поэтому я и нарушаю некоторые принципы культурности, так сказать.
Про заголовки из моделей я уже писал. Это сделано лишь в одном месте (наследуемый класс AjaxModel), и с определенной целью. Нужно будет, вынесу в другое место.
Про высокую связанность - что ж, жизнь покажет. Выбор в этом вопросе всегда нужно делать.
bestxp
23.09.2014 - 16:21
ну вот опять вижу только вашу лень и что вам лень
1 Рефакторить
2 Делать нормальную архитектуру
3 Воспользоваться composer
и
Цитата |
Собственно, для этой цели и имеется Request, в который ложится то, что нужно.
|
не место ему там нужные параметры модель должна получать, а не брать сама из внешнего мира
так сказать модуль нижнего уровня не должен знать о модуле верхнего уровня
AmberV
23.09.2014 - 16:35
Не лень, а:
1) рефакторить пока что нечего
2) архитектура пока что вполне оправдывает себя. Кроме того, из-за нехватки опыта некоторые вещи приходится сначала делать, а потом смотреть, как это улучшить
3) возможно, в будущем
vagrand
23.09.2014 - 16:42
AmberV
Ответьте мне на такой вопрос - зачем я должен пилить с нуля например нормальную валидацию полей формы, при чем как на клиентской так и на серверной стороне, если в нормальных фреймворках это уже реализовано на должном уровне?
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
AmberV
23.09.2014 - 17:08
vagrand
Хороший вопрос. Но можно пример, как фреймворк позволяет упростить жизнь в данной ситуации: все данные перекидываются AJAXом (извиняюсь, если это не очень корректно звучит), и валидацию нужно делать на стороне клиента на JS? А на стороне сервера нужно проверить лишь корректность данных. Соответственно, достаточно описать модель данных и проверять соответствие ей, возвращая результат. В чем именно сложность здесь?
Вопрос может быть не в том, что это уже реализовано, а в том, что ту реализацию применять дольше, чем сделать свою собственную.
И опять же, вопрос скорости.
Валидация в Zend Framework:
Цитата |
Создание обобщенной библиотеки для работы с формами, которая покрывает все возможные сценарии использования, возникающие при разработке, было непростым испытанием, долгим и сложным делом, которое, к тому же, еще не завершено. |
Может, мне и половина тех возможностей не нужна?
bestxp
23.09.2014 - 17:29
А откуда ты знаешь что не нужна? Ты можешь не использовать их, и они будут лежать в виде файлика или ты еще борешься за каждый килобайт дискового пространства?
Притом есть
https://packagist.org/search/?q=formsСмотришь и выбираешь и используешь в пару строк подключив что нужно
и так любой компонент и его не нужно писать каждый раз с 0 оправдываясь мне нужно то и я не буду использовать ( это до поры до времени )
притом твой подход к программированию больше напоминает кучку индусов у которых код оплачивается кол-вом строк и велосипедов нежели качеством и устойчивостью к изменениями
нука расскажи мне какие ты метрики применяешь к коду что бы понять что он у тебя написан качественно?
vagrand
23.09.2014 - 17:44
AmberV
Цитата |
Но можно пример, как фреймворк позволяет упростить жизнь в данной ситуации |
Без проблем. Самая простейшая валидация на обязательность заполнения поля в фреймворке Yii:
1. В модели в методе rules() я добавляю правило:
array('alias', 'required', 'on' => 'update')
2. А затем в шаблоне пару строк:
$form = $this->beginWidget('CActiveForm', array(
'clientOptions' => array(
'validateOnSubmit' => true,
'validateOnChange' => true
),
));
echo $form->errorSummary($model);
echo $form->textField($model, 'alias');
$this->endWidget();
Вот и весь код. А в итоге у меня есть валидация на клиенте, при чем как при изменении поля так и при сабмите формы. При этом поле красиво подсвечивается красным цветом и при наведении всплывает подсказка + месадж можно вывести и отдельно. Ну и соответственно у меня есть валидация на стороне сервера. И все это парой строк.
А теперь давайте посмотрим как с такой задачей справиться ваш фреймворк?
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
vagrand
23.09.2014 - 17:57
AmberV
А вообще можно привести хорошую аналогию для данного спора. Вот допустим есть два работника, оба занимаются копанием траншей и фундаментов, но один делает это при помощи лопаты, а второй при помощи экскаватора. Под экскаватором я тут подразумеваю нормальный фреймворк.
Вот вроде бы при помощи лопаты можно не только траншеи копать, а еще и навоз перекидывать и огород вскопать и еще много чего. Но вот скажите, если приминительно к своей задаче, то кто справиться быстрее и качественнее с рытьем траншей?
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
waldicom
23.09.2014 - 18:12
Главное, что экскаватором можно запросто зафигачить электрокабель, так что пол района без света сидеть будут. Или бомбу сдетонировать... Да и бензин и запасные части стоят столько, шо капес. А с лопатой в этих смыслах проще.
Это я к тому, что не обязательно крутой фреймворк - панацея.
_____________
Свои мозги еще никто не отменял.
Телепатов нету.
bestxp
23.09.2014 - 18:17
я вообще склоняю к тому что половину кода низкоуровневого можно не писать, все давно написано ( композер ) и собирать что угодно ( лопату которая эффективно копает )
Странно видеть такие срачи на форуме программистов "зачем чистый PHP, если можно фрейм ворк, зачем фрейм ворк, если можно движок поставить, зачем ставить движок ,если можно нанять студию"
_____________
Промокод предоставляет скидку на заказ домена и/или хостинга reg.ru
BFCC-3895-8804-9ED2
vagrand
23.09.2014 - 18:39
waldicom
Цитата |
Это я к тому, что не обязательно крутой фреймворк - панацея |
Я вроде как привел конкретный пример полезности фреймворка. Давайте не будем голословными, приводите конкретные примеры плз.
_____________
Senior PHP developer: PHP5, MySQL, JavaScript, CakePHP, Yii/Yii2, Zend Framework, Smarty, XML/Xslt, JQuery, Jquery Mobile, Bootstrap, ExtJS, HTML, HTML5, CSS, Linux, SVN, Git, Memcached, Redis, MongoDB, Zend Guard, Ioncube, FFMpeg, PayPal, Webmoney, Qiwi, Facebook API, Vkontakte Api, Google API, Twitter Api, Steam Api.
Junior Android Developer: Android SDK, многопоточность, работа с HTTP запросами, JSON, SQLite, фрагменты.
Быстрый ответ:
Powered by dgreen