can3p (can3p) wrote,
can3p
can3p

Стефан Стоянов. Javascript patterns

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

Javascript ( далее js ) выделяется среди других тем, что чрезвычайно выразителен, но при этом ядро языка можно описать в цикле статей в отличие от классических языков, для описания которых выпускают целые многотомники. Подумать только, килограммы документации, чтобы только понять, что ты можешь использовать в языке. В случае js мы имеем несколько сжатых концепций, которые при известном умении позволяют писать большие и сложные системы, а также имитировать понятия, для которых в других языках выделяют отдельные сущности – классы, пространства имен, модули, видимость переменных и т.д.

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

Стефан Стоянов попробовал собрать все типовые задачи в одном месте, результатом чего и является эта книга. JS Patterns надо понимать буквально – не просто шаблоны проектирования (см. GoF), а именно типовые приемы решения технических вопросов, возникающих при программировании.

Глава 2 посвящена самым основным вопросам – глобальные переменные, использование фигурных скобок, комментарии, замечания по стилю, оптимизации про работе с DOM. К слову сказать, примерно такую же информацию можно почерпнуть в Google Javascript Style Guide. Глава 3 посвящена обращению в объектами, как самими по себе, так и отдельным типа Array и RegExp. Глава 4 целиком посвящена функциям и по-моему очень важна для понимания языка, т.к. именно на особенностях реализации функций построены многие приемы из следующих глав. Замыкания только приходят в C++ или PHP, а в Javascript они уже давно, и для правильной работы с ними требуется понимание специфики их реализации. Следующие главы посвящены непосредственной работе с объектами (глава 5) – видимость методов, способы управления иерархиями объектов (пространства имен, модули, sandbox pattern), расширение функциональности объектов ( глава 6 ) – здесь описаны как имитации классического наследования, т.к. и способы, связанные непосредственно с особенностями js ( наследование на основе прототипов, копирование свойств объектов, mix-ins), реализация классических шаблонов проектирования ( глава 7 ) – Singleton, Factory и прочие друзья, причем многие из шаблонов становится проще реализовать, если не думать о ООП в рамках классов и решать дело объектами, смотреть тот же Decorator. Глава 8 посвящена частым вопросам по работе js в браузере – как осуществлять загрузку скриптов, различные способы выполнения скриптов и организация взаимодействия с сервером.

Не скажу, что эта книга сейчас открыла мне глаза на мир, но еще полгода назад она мне очень здорово помогла бы. Хотя всю информацию, собранную в книге, так или иначе можно собрать по различным сайтам и блогам, здесь все уже собрано и систематизировано, также ввиду того, что книга свежая, автор учитывает появление последнего стандарта ECMAScript и периодически делает соответствующие оговорки в книге. Снова оговорюсь: при известном упорстве всю информацию, описанную в книге, можно почерпнуть в интернете.

Из минусов, скорее особенностей – т.к. книга именно про Javascript, то в книге не стоит искать откровений с точки зрения работы с DOM. Автор просто говорит – помните, что общаться с DOM дорого, модифицировать его еще дороже ( Reflow, Repaint ), поэтому старайтесь делать это скопом для увеличения производительности. Еще, лично мне сейчас очень помог бы разбор архитектуры какого-нибудь крупного javascript-приложения, который помог бы оценить, как все описанные приемы сочетаются вместе, и какие подводные камни встречали программисты при реализации.

Вердикт: очень полезная книга, к которой можно быстро обратиться для уточнения каких-то вопросов, и которая выгодно выделяется среди большого количества бесполезных книг по js. Ее сравнительно небольшой объем только подтверждает тезисы из начала поста о том, что javascript малыми средствами позволяет получить на руки те мощные средства, для которых в других языках изобретают громоздкие велосипеды. Думаю, что книгу будет полезно читать в несколько заходов. Каждый раз отмечать для себя полезные приемы и стараться реализовать их в коде.

Об авторе с сайта издательства: Stoyan Stefanov is a Yahoo! web developer, Zend Certified Engineer, and an author, contributor, and tech reviewer of various O’Reilly books. He speaks regularly about web development topics at conferences and on his blog at www.phpied.com. Stoyan is the creator of the smush.it image optimization tool and architect of Yahoo’s performance optimization tool YSlow 2.0.

Ru: Стоян стефанов – веб разработчик Yahoo!, сертифицированный инженер Zend, автор, соавтор и рецензент различных книг издательства O’Reilly. Регулярно учавствует в конференцияъ и пишет в своем блоге www.phpied.com о веб-разработке. Стоян – создатель утилиты для оптимизации изображений Smash.it а также архитектор инструмента для оптимизации скорости выполнения YSlow 2.0

Купить книгу можно в электронном формате прямо на сайте издательства.

P.S. Буду очень благодарен за перевод понятия mix-in на русский язык.


Оригинал: http://blog.dpetroff.ru/tech/stoyanov-javascript-patterns
Tags: books, javascript
Subscribe
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments