Еще одна книга о паттернах? Дайте две!

    Привет, читатель! Я хочу поговорить с тобой о паттернах проектирования. Знаешь, это такая старая штука, о которой модно было писать в конце прошлого века, и некоторые изверги о них еще иногда спрашивают на собеседованиях. У меня возникла мысль, что пришла пора снова вспомнить о них, но на этот раз рассмотреть их в современных реалиях. А разве есть более подходящий способ это сделать, кроме как взять… и написать об этом книгу?




    Почему сейчас и почему о паттернах? За последние 20 лет довольно много чего произошло с современными подходами к разработке. В начале девяностых был бум паттернов, потом пришел черед DI и «программирования в файлах конфигурации», потом начался хайп вокруг DDD, в это же время стремительно начали набирать популярность техники функционального программирования. Сделало ли все это паттерны неактуальными? С моей точки зрения, нет, не сделало!

    Хайп вокруг паттернов действительно прошел, и пришло время посмотреть на них с высоты нашего опыта. Для одного паттерны утратили свою актуальность, а для другого синглтон остается нашим всем. В своей книге я хочу взять какой-нибудь паттерн и рассмотреть его со всех возможных сторон: посмотреть, как он выглядит в книге «банды четырех», рассмотреть его «каноническое» современное представление, рассмотреть 3-4 типичные реализации на языке C#, подумать, как он влияет на дизайн приложения, ну и посмотреть на примеры их применения в .NET Framework и в современных приложениях.

    Например, если говорить о богомерзком Синглтоне, то я приведу 4 разных реализации на платформе .NET, покажу чем классический Синглтон отличается от паттерна Ambient Context, и покажу «где» и «в каком виде» он применим в современном приложении.

    Или возьму фабричный метод и рассмотрю его не только с точки зрения классической реализации, но и отвечу на вопрос, нарушает ли фабричный метод на основе словаря или switch-а принцип Открыт-Закрыт. Потом перейду к Шаблонному Методу и рассмотрю его в контексте проблем наследования и принципов проектирования по контракту, а потом сравню классический Шаблонный Метода со специфической реализацией в C# на основе лямбда-выражений.

    Когда я возьму Посетитель, то не только покажу, где и когда он применяется, но и расскажу об известной проблеме программной инженерии под названием expression problem, о типичных подходах к расширяемости в мирах объектно-ориентированного и функционального программирования, о роли паттерна Посетитель в контексте принципа Открыт/Закрыт.

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

    Хочется не просто рассказать о паттернах, со скучными каноническими диаграммами классов, некоторые из которых невозможно встретить в реальном коде. Хочется взять ключевые GoF-паттерны и показать, как они эволюционировали, как они обычно реализуются на языке C#, и как сильно они въелись в сам .NET Framework и наши с вами пальцы.

    А к чему это я веду? Дело в том, уважаемый Читатель, что мне нужна твоя помощь. Издатель (в лице издательского дома Питер a.k.a ph_piter) готов взяться за эту книгу, но ему нужно мнение сообщества по поводу актуальности ее актуальности (это не очепятка!). Мы-то с вами готовы жертвовать своим временем в ущерб семьи и других интересов, но бизнес следует несколько иным принципам.



    Так что, уважаемые камрады (и камрадки), если вам хотелось бы увидеть эту книгу в печатном виде, то отреагируйте как-нить в комментах или другим удобным способом.

    З.Ы. Если нужно содержание книги, то я готов его выложить, хотя оно будет мало чем отличаться от содержания классической книги банды четырех, с некоторыми ответвлениями.

    З.Ы.Ы. Спасибо ИД Питер a.k.a. ph_piter, что готов взяться вместе со мной за это дело!

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

    Интересна ли будет такая книга?

    • 74,5%Конечно, дайте две!801
    • 25,5%Нет, спасибо, я еще GoF не осилил274

    Средняя зарплата в IT

    113 000 ₽/мес.
    Средняя зарплата по всем IT-специализациям на основании 5 572 анкет, за 2-ое пол. 2020 года Узнать свою зарплату
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 54

      0
      Какие начало 90-ых? Fowler, Martin (2004-01-23). «Inversion of Control Containers and the Dependency Injection pattern». Martinfowler.com. Retrieved 2014-03-17.
      Вы ничего не путаете? en.wikipedia.org/wiki/Dependency_injection
      Да и функциональные техники были задолго до этого.
        +4
        А при чем здесь Dependency Injection? (ну и даже он ведет свою историю с принципа DIP, описанного Бобом Мартином в 1996 — www.objectmentor.com/resources/articles/dip.pdf).

        Я же про GoF (книга 1994-года), и про другие классические паттерны, движение вокруг которого началось именно в начале 90-х.

        З.Ы. Паттерны — это универсальное понятие, они были, есть и будут. Речь здесь именно о класических паттернах!
          +2
          Расшифруйте что такое DI, по словам, что это за сокращение?
            +1
            Может быть DIP? (я не вижу у себя сокращения DI). Если таки да, то это Dependency Inversion Principle (кстати, именно он по ссылке и приведен), и именно он является прородителем Dependency Injection Pattern-а.
              0
              Вот именно, что DIP, а не как не DI. Ибо DI устоялось давно для другого, конкретной реализации принципа. Просто начало статьи очень желтое, вроде практическую книгу хотите, а начинаете с каких-то высокопарных слов, да еще и меняя терминологию, что предложили авторы задолго до вас. Та же статья, что вы приводите, это конец 90-ых, а не начало. Он в ней же ссылается на прошлую статью, марта 96.
                +1
                Ага, я теперь понял. Да, там очепятка вышла, речь шла, что именно в начале нулевых был бум DI.
                0
                В начале девяностых был бум DI и «программирования в файлах конфигурации»
          +2
          Хотим увидеть в Google Play.
            –3
            … и на rutube :)
              +3
              Не понял сарказма, если честно. В Google Play уже сто лет продаются книги, я там постоянно что-то покупаю. Электронную книгу я куплю (если она будет стоящей и я захочу её прочитать). Бумажную не куплю. Проще не читать эту, а прочитать другую, на эту же тему.

              К автору большая просьба, не смотря на то, что издательства платят сейчас за страницы, хотелось бы увидеть хорошую книгу, а не 700+ страниц листингов кода, вставленных ради объёма.
                0
                Я думаю, что сегодня выпускать книгу без электронной версии смысла нет. Я сам когда-то большой любитель бумажных книг, уже давно пересел на электронные версии. Так что в том или ином виде, но электронная версия точно будет.
                  –1
                  Это юмор, а не сарказм — надо отличать. Если относиться к жизни слишком серьёзно, то рискуешь повеситься от несовершенства вселенной. :)
              +1
              Мушкетеры Паттерны 20 лет спустя. Нет планов привлечь хабросообщество к написанию сего труда?
                +6
                У меня уже есть наброски:) А я знаю, какой тяни-толкай может получиться при совместной работе над подобными вещами.
                А вот от ревьюеров не откажусь, это однозначно!
                  +1
                  Считайте меня волонтером в таком случае, будет интересно принять участие.
                    +1
                    Супер! Как только судьба книги решится, обязательно свяжусь!
                      0
                      Я бы с радостью, но если не будет желтого заголовка-введения
                        0
                        И меня возьмите.
                          0
                          Супер!
                    0
                    С удовольствием сделал бы ревью)
                      0
                      Буду обязательно иметь ввиду!
                  +1
                  Книга однозначно полезная. Очень много по паттернам проектирования книжек где Java. А по .net специализированной фундаментальной книги «про это» не встречал. Хотя конечно возможно такая существует. Если я не видел, не значит что ее нет. Но не доводилось встречать.
                    +8
                    Я читал такую книжку:

                    apparchguide.ms

                    «Команда patterns & practices — небольшая группа опытных архитекторов, разработчиков, писателей, тестеров, планировщиков продуктов и менеджеров, ответственных за разработку прикладных инженерных руководств, которые помогают архитекторам, разработчикам и их командам полностью использовать преимущества технологий на платформе Microsoft.»

                    Всем советую! Может быть там не очень детально расписано и примеров кода не хватает, поскольку там больше про архитектуру, но про паттерны проектирования там очень хорошо написано когда какие рекомендуется применять
                      0
                      Спасибо! Красота и бальзам на душу! Простите что не плюсую, нет возможности.
                    0
                    Книжка в печатном виде однозначно нужна. Уже очень давно хочется почитать обновлённую версию GoF с уклоном на практику. А примеры на C# — это вообще прекрасно. Если у вас всё получится, то обязательно куплю себе экземплярчик.
                      0
                      Пишите, лишним это знание не будет.
                        0
                        >>З.Ы. Если нужно содержание книги, то я готов его выложить, хотя оно будет мало чем отличаться от содержания классической книги банды четырех,
                        >> с некоторыми ответвлениями.

                        Выкладывайте, это интересно.
                          +1
                          Первый вопрос:
                          для кого книга? Только не отвечайте «для всех»… Для всех не бывает.

                          Возможные варианты:
                          1) Фундаментальный труд (яко книги Танненбаума)
                          2) Практический «быстрый старт»
                          3) Для неофитов (=студентов 1го 2го курсов)
                          4) Для личинок-неофитов (для 9ти и 10ти классиков)
                          5) Для профи.
                          6) Для гик-профи (те, кто в состоянии за один вечер на чистом IL написать красно-чёрное дерево, например :))) )
                          7)…
                            0
                            Целевая аудитория: пре-профи или адвансед новички.

                            Ничего зубодробительного там не будет, но наличие опыта будет нужно, чтобы осело в голове больше.
                            +1
                            Я хоть на .NET не программирую и в ближайшее время вряд ли буду, но про паттерны проектирования с удовольствием почитаю. Книга о паттернах с современными примерами и с пояснением нынешних проблем их применения — это отлично.
                              0
                              Помимо печатной, электронную очень хочется! Заранее спасибо!!!
                                +2
                                Давно уже читаю ваш блог. Как по мне, самая ценность не в описании паттернов, а в реальных примерах использования. Как на пример у вас в «Примеры в .NET Framework». Как привило даже не задумываешься где и как они используются, а это дает правильное понимание, как их использовать и зачем.
                                Буду ждать продолжения ваших статей в блоге по паттернам.
                                  0
                                  Спасибо!
                                  –4
                                  мнение сообщества по поводу актуальности ее актуальности

                                  Не нужно.

                                  «Паттерны» — это как гербалайф, кому надо и кто умеет им пользоваться — тем эта книга не нужна, а кому паттерны не нужны (люди с мозгами, способные сами создать алгоритм) — тем тем более не нужна.
                                  Да и просто погуглите «паттерны» — это ж целый ворох ссылок, хотите добавить ещё одну стотыщпицотую??

                                  хотя оно будет мало чем отличаться от содержания классической книги банды четырех

                                  ВТРОЙНЕ не нужно.
                                    +2
                                    каждый раз велосипед создавать тяжело. Тем более люди с мозгами экономят эти самые мозги, то есть если имеется возможность стандартной реализации для 10-100-1000 ситуаций, можно запомнить ее одну и сэкономить клетки мммоска.
                                    Другое дело, что языки и платформы настолько разные, что все конечно хотят «на своем поле» читать такую литературу, с примерами из своей области(языка, технологии).
                                    Что касается Вашего камента то это мнение сообщества (какого? Где?) по поводу паттернов вообще. У нас же обсуждение идет о книге по паттернам в _конкретной_ технологии, причем где дефицит такой литературы.
                                      –2
                                      Дефицит? Серьёзно? (ввв google.co.za/search?q=design+patterns+c%23 About 6 710 000 results)

                                      каждый раз велосипед создавать тяжело.

                                      Шаблоны — примитивные схемки для тех, кто «не видит» задачу. Когда эти шаблоны перечитал и сто раз применил, не нужно даже помнить, что они вообще существуют — они сами всплывают. Ирония всей этой шумихи вокруг паттернов в том, что авторы продают «решения» несуществующих задач. А потом молодчики навроде «и мне тоже» в этом треде бегают с паттернами как с писаной торбой и не знают, куда их воткнуть. :) Забавно выглядит, словно первоклашкам дали кубики с цифрами/знаками, а они из них мучительно складывают примеры.
                                    0
                                      +1
                                        +2
                                        Обратите внимание на путь к книжке: ...gibkoi-razrabotki-na-yazyke-c-fail

                                        Это программисты на books.ru угорают, называя CSharp СFail-ом?)))
                                          +1
                                          Увы, там любая электронная книжка сразу fail (это по-русски так file называется).
                                      0
                                      Имхо, 4 варианта паттерна Singleton и его отличия от Ambient Context никак не вяжется с современными подходами в разработке. Все, что про них стоит написать… использовать не стоит. Тем, кому захочется вдохнуть нафталина, можно будет и Мартина почитать «Принципы. паттерны… на языке C#». Как и все книги она не идеальна, но для старта вполне может сойти. А зная качество контента по блогу Сергея, мне кажется, что он мог бы сделать что-то более актуальное.
                                        +2
                                        С удовольствием приобрету такую книгу, если выйдет.
                                          +2
                                          Поддерживаю, а если там будут практические примеры применения паттренов в самой платформе .NET(чем больше, тем лучше), тогда вообще возьму не задумываясь.
                                          Кстати, выражаю автору SergeyT отдельное спасибо за блог!
                                          0
                                          Паттерны 20 лет спустя уже написали. Правда к этой книге нужно относиться с большой осторожностью, т.к. в отличие от вдумчивого анализа паттернов, который был в GoF, в данной книге авторы просто тащатся от того, что с помощью паттернов можно закодить всякие штучки-дрючки, а о проблемах применимости не шибко задумываются, новичка эта книга может увести не в ту сторону.
                                            0
                                            Там же как раз и приводят паттерны на псевдореальных примерах?
                                              0
                                              Да, именно на псевдореальных. Там реальность искажается, чтобы быть похожей на паттерн, вместо того, чтобы паттерн подгонять под реальность.
                                              0
                                              там жаба. Я понимаю что синтаксис почти идентичен но особенности решают все )
                                                +1
                                                Там такая Ява, что и дотнетчик разберется. Иногда оговаривают, что вот конкретно в яве есть уже реализованный паттерн такой-то.

                                                П.С. но читая блог Сергея, жду его книги «специально для дотнета». Книгу куплю обязательно.
                                                0
                                                Серия Head First вообще очень странная. Я не понимаю всего этого задора и смешнявок. Мне нравится юмор в технических книгах/статьях, он часто бывает оправданным и неназойливым (как у Таненбаума, у Граннемана, Спольски). Но в этой серии явно переборщили с сюсюканьем, невозможно читать. При этом другие серии OReilly вполне нравятся.
                                                  0
                                                  Книга Head First Design Patterns действительно хороша, но это скорее учебник для новичка. Как уже сказали, там примеры с пиццами, которые сложно встретить в реальных приложениях.
                                                  0
                                                  А где вариант «Хочу книгу, но не читал GoF»?
                                                    +1
                                                    И еще более подходящий способ — сделать и поддерживать актуальным хороший веб-сервис. Для паттернов это подходит куда больше, мне кажется. Хотя книга это тоже замечательно, читать буду.
                                                      0
                                                      Есть подобное издание и веб сервис, правда на английском.
                                                      www.dofactory.com/Patterns/Patterns.aspx
                                                        +1
                                                        если вам хотелось бы увидеть эту книгу в печатном виде, то отреагируйте как-нить в комментах или другим удобным способом.

                                                        image

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

                                                        Самое читаемое