Книга Стояна Стефанова «JavaScript. Шаблоны»

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

Книга Стояна Стефанова «JavaScript. Шаблоны» как раз и предназначена для того, чтобы разобраться, как принято писать приложения на JavaScript, какие при этом используются приемы. После книги JavaScript. Подробное руководство Дэвида Флэнагана эта книга не стала каким-то откровением, но прочитать еще раз про идеологию JavaScript было полезно.

Когда программисты говорят о шаблонах, обычно подразумевают паттерны из знаменитой книги Банды Четырех про паттерны проектирования, книга «JavaScript. Шаблоны» тоже захватывает эту тему, показывая, как можно реализовать многие паттерны на JavaScript, но эта тема занимает лишь одну из восьми глав.

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

Хоть я и начал этот пост с того, что каждый язык имеет свои особенности, не стоит переносить привычки из одного языка программирования в другой, но есть ощущение, что сама идеология JavaScript провоцирует на это, поскольку во многих (хороших) книжках пишут о том, как сделать работу с объектами JavaScript такой же, как это было в Java (особенно это касается наследования, для правильной реализации которого в JasvaScript надо сделать не мало телодвижений). А еще почему-то многие авторы книг пытаются превратить JavaScript в Lisp, показывая, что можно писать в функциональном стиле, и автор этой книги не исключение. Вообще говоря, не со всеми советами Стефанова я согласен, но использовать функциональное программирования в JavaScript только из-за того, что это можно сделать, я бы не стал.

Многие советы в книге касаются того, как не нарваться на мины, расставленные автором JavaScript. Например, поскольку конструктор в JavaScript — это всего лишь функция, то пользователь может вызвать его в виде

var x = new MyObject();

или забыть оператор new и вызвать конструктор как обычную функцию.

var x = MyObject();

В книге есть советы, как сделать так, чтобы эти два вызова работали одинаково.

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

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

И, разумеется, автор не мог обойти проблемы, возникающие при работе приложений JavaScript в браузерах. Как известно, благодаря Microsoft, у нас есть браузеры и Internet Explorer (до версии 9.0, где MS стала исправляться), для которого половину клиентской части сайта надо переписывать отдельно.

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

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

В целом книга полезная, хотя у меня есть сомнения в правильности некоторых советов (в основном это касается оформления кода), но почитать ее стоит, особенно тем, кто только начинает писать на JavaScript.

PS. Вы можете подписаться на новости сайта через RSS, Группу Вконтакте или Канал в Telegram.

Пожалуйста, оцените запись

УжасноПлохоТак себеХорошоОтлично (Количество голосов: 3, средняя оценка: 5,00)
Загрузка...

Leave a comment

Subscribe without commenting