ФорумПрограммированиеPHP для идиотов → Шаблоны проектирования

Шаблоны проектирования

  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 24 июля 2007 г. 14:23

    Народу нет, в гугл посылать некого. Придется на данном этапе в узком кругу дискутировать и набивать контент :)
    Предлагаю похоливарить на священную тему — паттерны. Насколько они нужны вообще и в PHP в частности.

    Во-первых, считаю, что для ознакомление с данной темой несомненно полезно для общего развития.
    Во-вторых, глубоко уважаю товарищей Отцов Основателей.
    В-третих, многих из их адептов считаю полными психами.

    Основной вопрос, это то, что считать паттерном. С одной стороны, это абстрактный алгоритм решения абстрактной, но достаточно распространенной задачи. Выработаный на основании многократного решения этой задачи множеством людей.

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

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

    То, что я решаю свои задачи на языке PHP, несколько отличном от Java и работающем в достаточно специфичной среде, никого не волнует.
    Задачи есть только те, которые описаны в книжках, а все остальные можно свести к ним. Решения данные в этих книжках были абсолютно эффективными. И остаются ими не взирая на систему, платформу и вообще развитие вычислительной техники.

    А MVC, это синоним разделения кода и данных, что само по себе есть абсолютное благо, а все остальное зло. И этот MVC нужно тащить чуть ли не в той реализации, в которой он был для Smalltalk'а, куда не попадя.

    ______

    А теперь к практике. Основное, что бросается в глаза, создание огромного количества вспомагательных классов и объектов. Каждая, сколько бы то ни было, отдельная функциональность — класс. Изначальный посыл вроде бы верный — разбиение кода на отдельные модули + возможность замены одного объекта на другой с тем же интерфейсом, без затрагивания системы, где он использутеся + возможность использования в других местах. Но иногда доходит до идиотизма. Действия, которые больше ни в жизнь не будут использоваться вне данного класса, а то и метода, выносятся в объекты, а над ними строится громоздкий интерфейс.

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

    Однако в PHP все валится в GLOBAL и здесь начинается вообще полный п.ец.
    По моему личному ИМХО, это гораздо более противно основам вменяемого программирования, чем то, чтобы запихнуть в один класс пусть побольше действий и различного функционала, вместо того, чтобы разгребать глобальную область.
  • ghost

    Сообщения: 883 Репутация: N Группа: Джедаи

    Spritz 24 июля 2007 г. 15:28, спустя 1 час 4 минуты 30 секунд

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

    програмы мелкомягких быстро раскупаются не потому что у них идеальный код, который юзеру кстати до лампочки, или они лишены глюков. А потому что они разрабатываются быстро. т.е быстро реагируют на потребителя. а скорость достигается за счет использования универсальных, классических механизмов.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 июля 2007 г. 2:47, спустя 11 часов 19 минут 4 секунды

    Неужели мелкомягкие не умеют думать?
    Неужели мелкомягкие программируют на PHP?
  • NightmareZ

    Сообщения: 4 Репутация: N Группа: Кто попало

    Spritz 25 июля 2007 г. 7:43, спустя 4 часа 55 минут 44 секунды

    Книжки тоже люди пишут. А людям свойственно ошибаться. Стоит придерживаться здравого смысла, а не слепо идти за поводырями.
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 25 июля 2007 г. 9:17, спустя 1 час 34 минуты 24 секунды

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


    Для тебя это будет паттерном, для многих других нет… хотя возиможно такой паттерн уже есть

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


    Выбор методик разработки, совершенно не зависят от языка программирования(имею ввиду объектно ориентированного)…

    А MVC, это синоним разделения кода и данных, что само по себе есть абсолютное благо, а все остальное зло. И этот MVC нужно тащить чуть ли не в той реализации, в которой он был для Smalltalk'а, куда не попадя.


    MVC - дестивительно уникальный паттерн, и при грамотном его использовании это всё таки благо… Да и раслоение системы должно быть….

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


    Не зарекайся!

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


    Класс должен выполнять узкую функциональность и фактически не знать о других. А большие классы - это "запах" от которого надо избавлятьься.

    А людям свойственно ошибаться.

    Ага особенно когда вопросом ООП занимаешся лет 20!

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

    Парное программирование и разбор кода спасут проект!



    А потому что они разрабатываются быстро. т.е быстро реагируют на потребителя. а скорость достигается за счет использования универсальных, классических механизмов.


    +++++++++++++++100
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 июля 2007 г. 9:26, спустя 9 минут 1 секунду

    Выбор методик разработки, совершенно не зависят от языка программирования(имею ввиду объектно ориентированного)…

    А что считать методикой? Расписывание структуры классов и взаимосвязей между ними, уже не методика, а алгоритм конкретной реализации.

    А большие классы - это "запах" от которого надо избавлятьься.

    Куда избавляться? В глобальный контекст? Буду изолированные пространства имен, буду избавляться.

    MVC - дестивительно уникальный паттерн, и при грамотном его использовании это всё таки благо…

    Грамотного использования быть не может. Может быть только дословно правильное и неправильное :)

    Ага особенно когда вопросом ООП занимаешся лет 20!

    Если эти 20 лет 1970-1990 на языке smalltalk, то некоторые вещи могут быть неприменимы к PHP 2007-го.

    а скорость достигается за счет использования универсальных, классических механизмов.

    Исходники винды кто-то достал?
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 25 июля 2007 г. 9:52, спустя 25 минут 50 секунд

    Если эти 20 лет 1970-1990 на языке smalltalk, то некоторые вещи могут быть неприменимы к PHP 2007-го.

    не только на smalltalk,но и на JAVA, С++ , С#

    А что считать методикой? Расписывание структуры классов и взаимосвязей между ними, уже не методика, а алгоритм конкретной реализации.

    XP, TDD, Парное программирование, Scrum(вроде так пишется), всё это ООП методологии, что касается алгоритма то это скорее всего дизайн системы.


    Исходники винды кто-то достал?


    скорость разработки… и винда тут не при чём!

    Грамотного использования быть не может. Может быть только дословно правильное и неправильное :)


    тогда что считать правильным?

    Куда избавляться? В глобальный контекст? Буду изолированные пространства имен, буду избавляться.


    А вот это каждый решает сам! т.к. рефакторинг это искуство, всё зависит от задачи.
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 25 июля 2007 г. 10:06, спустя 14 минут 24 секунды

    не только на smalltalk,но и на JAVA, С++ , С#

    Мы о какой-то конкретной личности говорим?
    тогда что считать правильным?

    Правильное это то, что написано в умной книжке и овеяно авторитетом умного человека. И не допускает никаких изменений.
    А вот это каждый решает сам! т.к. рефакторинг это искуство, всё зависит от задачи.

    А от языка не зависит?
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 25 июля 2007 г. 13:21, спустя 3 часа 14 минут 37 секунд

    Мы о какой-то конкретной личности говорим?


    Не но 99% идеологов ООП в какой то мере писали на этих языках

    А от языка не зависит?

    Я считаб что нет. по крайней мере php5 не в полной жопе
  • Timur

    Сообщения: 1068 Репутация: N Группа: Джедаи

    Spritz 1 августа 2007 г. 14:59, спустя 7 дней 1 час 38 минут

    а есть где почитать про шаблоны применительно именно к php? знаю те что из мана - singleton и factory и всё…
  • Patrick

    Сообщения: 506 Репутация: N Группа: Кто попало

    Spritz 5 августа 2007 г. 20:50, спустя 4 дня 5 часов 50 минут


    а есть где почитать про шаблоны применительно именно к php? знаю те что из мана - singleton и factory и всё…

    Какая разница на каком языке писать, шаблон он и в африке шаблон…
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 10 августа 2007 г. 4:40, спустя 4 дня 7 часов 50 минут

    С первого поста тема уже провалилась…
    Остался тока флейм.

    Команда… Может я не понимаю этой темы потомучто работаю один все время?
    По началу работали вдвоем, писАли один сайт, но разные проекты на нем…
    adw/0
  • adw0rd

    Сообщения: 22905 Репутация: N Группа: в ухо

    Spritz 10 августа 2007 г. 4:42, спустя 2 минуты 11 секунд

    Сейчас пользуюсь своей CMS, использую Smarty как шаблонизатор.
    adw/0
  • vasa_c

    Сообщения: 3127 Репутация: N Группа: в ухо

    Spritz 10 августа 2007 г. 4:54, спустя 11 минут 11 секунд

    Это не те шаблоны :)
    Это эти
  • sectronix

    Сообщения: 3 Репутация: N Группа: Кто попало

    Spritz 13 августа 2007 г. 8:08, спустя 3 дня 3 часа 14 минут

    а есть где почитать про шаблоны применительно именно к php?

    http://www.books.ru/shop/books/441006

    Вообще книг по этому поводу много написано. Шаблон не должен зависеть от языка программирования, главное - понимание.

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