Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
Страницы: (7) « Первая ... 2 3 [4] 5 6 ... Последняя » ( Перейти к первому непрочитанному сообщению )  
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Очередной холивар по методологиям, Флуд от "биографии" twin'a
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




twin
А в чём разница на картинке?
Что у тебя запускается "ядро" так сказать, а потом приложение, что у него.
Типа у тебя приложение само инклюдит библиотеки, а у chee либы берутся из менеджера зависимостей?


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
[x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (Arh @ 5.04.2016 - 09:20)
А в чём разница на картинке?

Разница в том, что первично. В его схеме первична инфраструктура. В неё нужно отправить объекты приложения, дальше она сама разбирается с ними. Для этого и придумали инверсию управления (IoC). Иначе будут траблы, так приложение начнет управлять фреймворком, что нонсенс.

Но этого мало, еще желательно применить DI, так как инфраструктура претендует на универсальность. Она должна уметь работать с любыми классами приложения. Это же фреймворк по сути. Вещь главная и самодостаточная. Фреймворк должен поместить в свою среду пользовательские объекты и обработать их. А это удобнее всего сделать через внедрение зависимостей.

А там, где используется DI, нужно свято следовать принципам DIP, который входит в SOLID. Нужно понимать, что цепочка раскручивается наоборот. Именно SOLID придумали для упорядочивания таких схем, а не все схемы строятся исключительно по этим принципам. Программа может быть построена и по другим канонам, просто это перестанет быть фреймворком.

Разумеется для более грамотного упорядочивания таких схем удобно использовать DIC. А вместе с ним уже накручиваются карты, обсерверы, локаторы, медиаторы и пошло-поехало. В итоге для того, чтобы запустить пару классов приложения, нужно заюзать пару десятков классов инфраструктуры. Это принцип Push (толкать). Инфраструктура "толкает" приложение.

Если строить программу по принципу Pull (тянуть), то первичны классы приложения. Его нужно только запустить, оно само вытянет из окружения то, что необходимо для текущей задачи. И тут IoC теряет всякий смысл. Приложение не может не зависеть от библиотек, как и библиотеки не могут зависеть от приложения. Соответственно пропадает надобность в DI на глобальном уровне. А вместе с ним и всей веревки классов, обеспечивающих интеграцию.

И поэтому количество задействованных в формировании страницы скриптов падает на порядок - раз. Появляется возможность использовать различные методологии, не только ООП - два. Хотя внутри модулей и компонентов можно спокойно юзать всё, что душе угодно. И абстракции, и DI, и свято придерживаться SOLID и паттернов наворотить гору. smile.gif Никому это не вредит, так как библиотека не зависит от приложения и штука весьма автономная. Эдакий микрофреймворк. smile.gif

У такй схемы есть конечно недостатки.

Первый, на мой взгляд не самый важный - сложность тестирования. Но для этого есть свои приемы, не обязательно юзать юниты.

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

Третий - усложняется процесс разработки. Так как нет универсальной инфраструктуры, которая решает за программиста некоторые задачи. Потому и популярны мейнстримные фреймворки. Библиотеки тут приходится юзать ручками. smile.gif

И вот это и есть основной камень преткновения. Для того, чтобы разрабатывать ПО быстро и без особых усилий, вполне годится схема фреймворка. Однако за это приходится платить оптимальностью и прозрачностью. Про оптимальность думаю и так понятно. А вот с прозрачностью спорный вопрос. Если фреймворк популярен и хорошо документирован, то еще куда ни шло. А вот попробуй разобраться в поделке от chee.

Так вот, а если это конечный долгоиграющий проект, который тебе же и приходится обслуживать, то на мой взгляд лучше
Цитата
день потерять потом за пять минут долететь
Так как инфраструктура минимальна и выверена годами. А функционал приложения и библиотеки гораздо проще модифицируются, так как система дискретна, а не связана в один узел. С которым и призваны бороться "новейшие технологии". Такие как IoС, DI, DIP и куча паттернов.

- - - - - - - - - - - - - - - -
Для тех, кто не в теме.
IoC - Inversion of Control (инверсия управления). Принцип взаимодействия приложения с окружением.

DI - Dependency Injection (внедрение зависимостей). Передача объекта в область видимости базового класса.

DIC - Dependency Injection Contayner (контейнер для внедрения зависимостей) Эдакая централизация зависимостей. Функционал, регистрирующий и хранящий объекты. Служит для передачи зависимостей скопом.

DIP – Dependency Inversion Principle (принцип инверсии зависимостей). Зависимости класса должны располагаться на текущем или более высоком уровне абстракции

SOLID Сами читайте


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 14 дней
Карма: 111




Какие сложны схемы

все куда проще

Request -> App -> Response 


а что внутри ( App ) уже обусловлено тем насколько твой мозг извращен и насколько сильно ты себя ненавидишь что бы при поддержке в дальнейшем ставить костыли сегодня и делать извращение из кода в виде того что показал например Twin, например игнорирование SOLID тебе сделает больше боли чем пренебрежение ими как пример , порой ум человека может довести до такого что потом стоит поменять строку в одном месте, как ломается то где даже и не думал что может сломаться и тд

это уже аксиома)


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Arh  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



146%
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2102
Пользователь №: 27172
На форуме: 5 лет, 8 месяцев
Карма: 70




twin
Я твою схему понял так:

Рисунок 1.
Есть ядро, в которое подключены некоторые стартовые алгоритмы типа автозагрузчика.
Есть библиотеки.
Всё это называется фреймворком.
Фреймворк с помощью библиотеки маршрутизации понимает где, какое приложение подключать.
Фреймворк подключает приложение, передавая в него необходимые библиотеки с помощью DIC.
Приложение работает на полученных от фреймворка библиотеках.

Рисунок 2.
Есть ядро, в которое подключены некоторые стартовые алгоритмы типа автозагрузчика.
Есть библиотеки.
Всё это называется фреймворком.
Фреймворк с помощью библиотеки маршрутизации понимает где, какое приложение подключать.
Фреймворк подключает приложение.
Приложение работает, используя необходимые библиотеки, которые оно получает с помощью подключенной библиотеки DIC или new.


--------------------
:)
PMСайт пользователя
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


bestxp
Я не могу читать твои тексты. Пять раз прочитал, половины не понял. Если у тебя и в коде такой же бардак, никакой SOLID не поможет. sad.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Arh
Не так немного. Попозже объясню.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 14 дней
Карма: 111




Цитата (twin @ 5.04.2016 - 14:55)
bestxp
Я не могу читать твои тексты. Пять раз прочитал, половины не понял. Если у тебя и в коде такой же бардак, никакой SOLID не поможет. sad.gif

А что не понятного

у нас все приложение по сути есть

Request -> Response

Запрос - ответ, а внутри все равно одно и тоже под разными соусами, только в некоторых случаях у нас все просто и через год таким останется, в другом случае у нас бардак и мешанина

Все подвержено эволюции, но кто-то застревает на определенном этапе когда ему комфортно, кто-то идет далее и уже переходит на ступень выше

Привет 2d и 3d муравьям, первые видя стену будут ее обходить, вторые поняли что быстрее перейти через нее и быстрее и удобнее, в итоге первые недовольны вторыми так как они почему-то могут, а им не комфортно от этого



--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Вот теперь понятно. А то каша какая то без запятых и смысла.

Все остальное комментировать не буду. Ты явно не читал моих трактатов, зачем повторяться. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Arh
Если примитивно, то так.

Рисунок 1.
Есть инфраструктура, в которое подключены некоторые стартовые алгоритмы типа автозагрузчика.
В ней же система управления классами приложения и библиотеками.
В ней же и основные библиотеки.
Всё это называется фреймворком. Ну или оболочкой. (src/framework)
Фреймворк загружается и регистрирует внутри себя объекты приложения (application).
Взаимодействуя с объектами приложения, которые находятся внутри фреймворка, формирует страницу, используя собственные библиотеки.

Рисунок 2.
Есть инфраструктура, в которое подключены некоторые стартовые алгоритмы типа автозагрузчика.
В ней же минимальный набор скриптов, запускающих приложение (роутер, конфига и пр).
Есть отдельный набор библиотек, модулей и компонентов. Это не фреймворк, это часть приложения.
Приложение вызывает необходимые скрипты из этого набора и формирует страницу.

На первый взгляд похоже, но в этом вся фишка. Что по схеме, когда не фреймворк, а само приложение создает окружение, теряет смысл инверсия зависимостей. Ну я расписал уже.

Это не нарушение SOLID, как посчитал bestxp. Потому что нельзя нарушить то, чего не требуется по определению.

Другими словами, если ты едешь на легковой машине, отсутствие категории "С" не является нарушением. Нарушить SOLID в части DIP можно только используя первую схему.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Вот хорошая статья. Там как раз описывается принцип IoC. Не слышал раньше про Голивуд. smile.gif

Основной лейбмотив:
Цитата
Инверсия управления является ключевой частью того, что различает фреймворк и библиотеку. Библиотека это по существу набор функций, которые вы можете вызывать, в наши дни они организованы в классы. Каждый вызов выполняет некоторую работу и возвращает управление обратно пользователю.

Фреймворк воплощает в себе некоторый абстрактный дизайн со встроенным поведением. Для того, чтобы использовать его, вы должны добавить свой код в различных местах фреймворка, либо через наследование, либо подключив свой собственный класс. Код фреймворка впоследствии будет вызывать ваш код.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (bestxp @ 5.04.2016 - 11:54)
Все подвержено эволюции, но кто-то застревает на определенном этапе когда ему комфортно, кто-то идет далее и уже переходит на ступень выше

Кстати, не подскажешь, почему набирает обороты SOA? Минимум в фреймворк, максимум в библиотеки. Помнится, когда вы затевали свой фреймворк, это ты же и декларировал. smile.gif


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
bestxp  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



орангутанг
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 2004
Пользователь №: 36605
На форуме: 3 года, 9 месяцев, 14 дней
Карма: 111




Цитата (twin @ 5.04.2016 - 17:00)
Цитата (bestxp @ 5.04.2016 - 11:54)
Все подвержено эволюции, но кто-то застревает на определенном этапе когда ему комфортно, кто-то идет далее и уже переходит на ступень выше

Кстати, не подскажешь, почему набирает обороты SOA? Минимум в фреймворк, максимум в библиотеки. Помнится, когда вы затевали свой фреймворк, это ты же и декларировал. smile.gif

Как я уже выше сказал все просто меняют взгляд) все сводиться к простому

RR принципу)) Request Response , что внутри произойдет только когда будет разобран запрос, сервисы предоставляются по требованию из конейнеров, они не инициализруются заранее, есть только кнопка включить по сути когда достаешь из контейнера


Как было пару лет назад, вспомним популярные CMS, ты подключил модуль и он сразу инициализируется по сути сжирая оперативку и тд, сейчас же включение модуля породит зависимость, но не съест ресурс, благодаря контейнерам в виде Symfony DI, Pimple, ServiceLocator, которые грубо говоря взяли на себя груз доставания нужного и необходимого для вызываемого сервиса.

По сути я уже как год в этом принципе пишу, в основе Silex допиленный , притом имея норм интерфейс, рефакторя модули заменяются на новые улучшенные и не ломают / трогают систему никак вообще, не добавляя сложности в код, сложность сконцентрирована в бизнес логике, там порой бывает уух


--------------------
PMПисьмо на e-mail пользователюСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 10 месяцев, 29 дней
Карма: 40




Цитата (twin @ 5.04.2016 - 16:39)
Нарушить SOLID в части DIP можно только используя первую схему.

То есть в моей CMS нарушен принцип DIP?


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
twin  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Глухой нуб
******

Профиль
Группа: Администратор
Почтальон группы
Сообщений: 15559
Пользователь №: 6543
На форуме: 8 лет, 1 месяц, 29 дней
Карма: 299

Трезвый :
5 лет, 11 месяцев, 9 дней


Цитата (chee @ 5.04.2016 - 13:52)
То есть в моей CMS нарушен принцип DIP?

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

UPD. Вернее не так. К моей схеме этот принцип вообще применять нельзя. Ибо он нарушается еще на стадии проектирования. Потому и говорю, что SOLID в основном разрабатывался для фреймворков. И не стоит пытаться натянуть его на модульную схему ради идеи.


--------------------
Если вам недостаточно собственных заблуждений, можно расширить их мнениями экспертов.

Нужно уважать мнение оппонета. Ведь заблуждаться - его святое право.

Зачем ворошить старое, когда можно наворотить новое?

user posted image
PMСайт пользователяICQ
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
chee  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Сын полка
Сообщений: 1780
Пользователь №: 38654
На форуме: 2 года, 10 месяцев, 29 дней
Карма: 40




Цитата (twin @ 5.04.2016 - 17:54)
SOLID в основном разрабатывался для фреймворков

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

Цитата (twin @ 5.04.2016 - 17:54)
Нет. Но в твоей его можно нарушить при определенных условиях.

Да? А это точно можно сделать, если писать при этом код по идеологии моей системы и использующий существующий функционал?

Цитата (twin @ 5.04.2016 - 04:39)
Но даже в построении десктопных архитектур свет не сошелся клином на одном Мартине. И его критикуют в полный рост.

Я почитал это http://sergeyteplyakov.blogspot.ru/2013/04/blog-post.html. Ты сам то читал, что там написано?


--------------------
Люди, имеющие низкий уровень квалификации, делают ошибочные выводы, принимают неудачные решения и при этом неспособны осознавать свои ошибки в силу низкого уровня своей квалификации

Мой блог
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темыСтраницы: (7) « Первая ... 2 3 [4] 5 6 ... Последняя » Ответ в темуСоздание новой темыСоздание опроса