Рецензия на книгу «Приемы объектно-ориентированного проектирования. Паттерны проектирования»

ОбложкаВсем, кто интересуется паттернами программирования, а особенно тем, кто не знает, что это такое, рекомендую почитать книгу «Приемы объектно-ориентированного проектирования. Паттерны проектирования».

Как я докатился до такой жизни: втемяшилась мне в голову мысль, что большинство проблем, которые я решаю сейчас, уже кто-то когда-то решал и может быть даже решил. Очень может быть, решил лучше и изящнее, чем я. Почему бы не перенять его опыт?

Сначала в архитектуру, потом в компьютерную науку было введено понятие паттерна. Академическое определение оставим доцентам с кандитатами, знакомыми до слёз, а в моём понимании — это типовые решения типовых задач (в частности, при объектно-ориентированном подходе). Нам, инженерам (developers!), надо просто научиться не переизобретать велосипед.

Читается трудно и результативно. Трудно — много нового; приходится прерывать чтение, чтобы заглянуть в справочник паттернов; простое почитывание толку не принесёт. Результативно — лично я смог применить знания, полученные буквально уже в первых двух главах (об этом в следующий раз).

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

Резюме: советую всем, кто стремится к повышению качества своих проектов. Вы один из таких?

👍НравитсяПонравилось0
В избранноеВ избранном0
Подписаться на автора
LinkedIn



Підписуйтесь: Soundcloud | Google Podcast | YouTube


28 комментариев

Подписаться на комментарииОтписаться от комментариев Комментарии могут оставлять только пользователи с подтвержденными аккаунтами.

Да, конечно есть те, кто хочет учиться, но, во-первых, очень мало (по сравнению с ёмкостью рынка труда), во-вторых, тяга к обучению заканчивается у многих уже к окончанию ВУЗа, когда, с одной стороны, кажется, что всё уже знаешь, с другой стороны, пора бы уже зарабатывать деньги и побольше. На деле, к этому времени у 95% знания стремятся к нулю:)

Чому ніхто не хоче вчитися? Я хочу навчатися програмуванню. І маю деякі невеликі успіхи в цьому. Пишу свою адмін-панель на PHP, використовуючи Ajax, Smarty, TinyMCE і ще хочу побудувати надійне ядро адмінки, використовуючи паттерни. З моїм бажанням і тягою до програмування я думаю, що досягну успіху. Є ще молодь, яка хоче вчитися і вчиться! З.І. Щоправда я закінчую 11-й клас і потім буду поступати до ВУЗу тому до літа програмування відійде на задній план.

С автором статьи полностью согласен — книга стоящая. Читал, кое-что применял.С качеством перевода — тоже согласен, местами хромает, и можно было некоторые термины оставить в оригинале.Не согласен с противниками паттернов. Паттерны, ровно как и OOA/OOP — всего лишь инструменты (и этот факт многие отечественные умы просто не могут воспринять), и не более. Инструментом можно пользоваться, можно не пользоваться. Но знать о его существовании и принципе работы — безусловно полезно. Тем более, что данная книга не заполнена лозунгами (как, например, книги по XP, которые тем не менее тоже полезны), и не требует перестройки мозгов на стиль patterns-only.С другой стороны, если конкретному девелоперу предлагают несколько книг для изучения на выбор, и при этом он не занимается дизайном (архитектурой), данная книга может быть вредна, поскольку займет место (и время) другой, более практичной книги (руководства по новой технологии и т.п.). Но данный случай обычно называют misuse, и книга от этого хуже не становится:).

let’s wont discuss features like ’switch’, usability etc:) (this is important too) As for me, atomic commits is the difference.

>> CVS DOESNT support atomic commits — this is the most signigicant difference.Это я знаю, но должно же быть ещё что-то.

2 Vadim Voituk: «Зато те, что знают — мнят себя гуру конфигурационного менеджемента, разрывая рубаху на груди рассказывают насколько лучше SVN чем CVS, но в тоже время отличий принципиальных назвать не могут (правда я и сам не могу:) »:) CVS DOESNT support atomic commits — this is the most signigicant difference.

2Vadim Voituk: я уже три месяца ношу свои окурки в карманах. мне проще сменить страну чем профессию:) по крайней мере — уже надело смотреть на мерянье патернами.

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

@General: Все с вами ясно — меняйте профессию, пока не поздно. С этой вам счастья не найти:) @akhavr: Зато те, что знают — мнят себя гуру конфигурационного менеджемента, разрывая рубаху на груди рассказывают насколько лучше SVN чем CVS, но в тоже время отличий принципиальных назвать не могут (правда я и сам не могу:)

2akhavr: кхм, не думаю, что стоит таким образом себя позиционировать — с чего мне вдруг проходить у Вас какой-то тест? я в украине по техническим вопросам собираюсь беседовать два раза и то в квазар-микро за свои деньги.:) что касается «втюхать и бежать» — согласен. А Вы видели тут человека который бы тут с рождения говорил по английски и не понимал укр (или рус)? менталитет не меняется и не скоро изменится — некому учить.

2Vadim Voituk:, а про работу в команде — очень даже насмотрелся (команды 10−30 человек). тоже противно. все эти варианты «против кого дружить», мальчики кроме «лукс гут» ничего не умеющие и прочие корпоративные прелести — не для меня.

2Vadim Voituk: работать на местный рынок не фонтан — можно сделать интересный проект, но проблемы с финансированием и менталитетом менеджеров — исскуство менеджмента заканчивается на «ну я ж добазарился — депутат кого надо нагнет».:) и что самое смешное у них — не получается.:) совок и противно связываться. А что касается зарубежа — так потому и работаю на дядю, что не знаю где проекты брать.

General: Вы просто пока не нашли нормальные (в вашем же понимании) проекты. Да и работаете скорее все-го на «архитиекторов в париже» вот и приходится подстраиваться под «чужого дядю буржуя». И про работу в комманде, я думаю, тоже знаете мало — потому как для того чтоб что-то «убогое хачить» команду собирать не надо.Возьмите проект на пол-года, соберите команду в 4 человека, разделите на всех задачи, а потом вместе попробуйте построить базовую архитектуру, да так чтоб все потом могли на этой архитектуре свои задачи решать, не перекраивая все вдоль и впоперек.P.S. Согласен с вами в том, что большинство кандидатов на должность программистов, каких довелось прособеседовать, о паттернах имеют весьма отдаленное представление.

2akhavr: «товар стоит столько, за сколько его можно продать». это «изобретение» пришло в нашу жизнь из других отраслей (не ИТ — скорее из так называемого менеджмента).2Vadim Voituk: в ua, основное предназначение паттернов — меряться кто их больше знает. реально не видел ни одного проекта который бы приносил радость — приходиться хачить нечто такое убогое... я уже плюнул искать работу — все рано где ####о лепить к ####у. только не надо рассказывать мне корпоративные сказки о том что меня наняли для того чтобы я это исправил — в лучшем случае «архитекторы все в париже», в худшем — архитектуру определяют менеджеры (из того же «парижа» ) — самое дешевое это сидеть хачить то что дали — «кулинарные» лягушки не любят волны в своем болоте — достаточно пропускать их пузыри мимо ушей да держать на дистанции.

2 General: Значит начальство этого человека позволяет ему вместо работы разводить ненужные красивые обсуждения. Не нравится — увольняйте.Да и какое отношение эти обсуждения имеют к паттернам? Что и кому вы пытаетесь доказать, пытаясь опровергнуть устоявшиеся мнения о паттернах своими мало-аргументированными тезисами.

кстати реальный пример. сидит один человек с небольшим опытом, после некоей фирмы на которой практиковалось коллектиное (!!!) обсуждение-выработка архитектуры. должность — обвычный девелопер. реально писать не может — делает панельку неделю (вместо одного дня). таск тупой до безобразия — сделать «по образу и подобию» по готовой архитетуре. зато масса каких-то красивых и никому не нужных обсуждений (я уже даже не делаю вид что слушаю).

Если работодатель изначально ограничивает потенциальных работников трехзначной зарплатой то зачем с ним вообще общаться? — либо он не может предоставить лучшие условия — идем к его конкуррентам:) либо не хочет... — становимся конкуррентами;)

сорри в последнем посте — «человеку» читать как «человеку с опытом работы по специальности».

2akhavr: я не говорю о тех кто вчера получил дипломы — это сырой материал — глина. вылепить из них специалистов еще предстоит. да и качество преподавания за последние 5−9 лет пошатнулось не в лучшую сторону.PS: человеку которого натаскивали 5 лет на выработку системного подхода подобные книги не нужны.

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

Очень неплоха книга Джошуа Кириевски «Рефакторинг с использование шаблонов» (Refactoring to Patterns, ISBN 5−8459−1087−0). Хорошо показано что процесс разработки — не просто кодирование заранее продуманного дизайна, а постоянное его улучшение.Книга несколько перегружена практическими примерами, но это необходимо для полного понимания.Особенно понравилось, что авторы не забыли так же про такое направление рефакторинга как отказ о паттернов. И в каждом конкретном случае есть обоснование, почему тот или иной паттерн оказался плох, и чем другой паттерн или наоборот полное отсутвие паттернов лучше.

Фаулер тоже не очень хорошо переведён, как по мне. Фразы в духе «паттерн ’Множество записей’», заставляющие угадывать, что же имелось в виду в оригинале (Recordset), мне не очень по душе.2-я мысль — «Patterns of EAA» — это next level по сравнению с GOF. Книжка, думается, лучше пойдёт, если вы уже имеете определённое (пусть — начальное) представление о этой кухне, в частности о углах взглядов на Enterprise-системы (requirements-driven development, performance)

Как раз книгу эту я бы рекомендовал не читать... потому что она ужасна, вернее перевод. Я ее когда-то купил и читать было очень тяжело, потом почитал в оригинале и оказалось, что все куда как проще, просто перевод отвратительный.Кстати, для тех, кто разрабатывает web/enterprise-софт куда лучше подойдет книга «Архитектура корпоративных програмных приложений» Мартина Фаулера.

давно есть оригинал и когда вышел перевод — взял несколько экземпляров в офиск сожаление перевод именно этого издания убивает оригинал читается гораздо легче

Есть желание публиковать обзоры книг на mustread.ru? Если да, то вот ссылка: Добавить рецензию.

2 Vadim: в этом — в оснвоном С++. В принципе, без многих примеров кода можно обойтись. Ещё мне нравятся примеры на Smalltalk и прочих языках, о которых много (очень много) народу даже не слышало.2 Sergey Pariev: Да, есть такое. Чувствую себя студентом-медиком, который по ходу чтения учебника находит симптомы всех описываемых болезней у себя самого:)

Главное в первое время удержать себя от применения всех подряд паттернов в каждом проекте:)), а то выйдет как в той статье Фаулера (http://www.martinfowler.com/ar...) — The world is full of the legendary programmer, fresh off his first reading of GOF who includes sixteen patterns in 32 lines of code

Согласен. Книга MustRead для каждого разработчика.Не знаю как вы этом издании, но в новом (http://www.ozon.ru/context/det.../) очень много примеров на Smalltalk -, а вот знания хотя бы базового синтаксиса Smalltalk нету: (

Подписаться на комментарии