Вступление
Чаще всего Web-дизайнеры, пользующиеся автоматической генерацией HTML-кода в пакете MX Studio, жалуются на то, что Fireworks MX и Dreamweaver MX создают программы-заготовки (ugly code). Этим термином они хотят подчеркнуть, что создаваемые программы являются сложными и слишком длинными.
Хорошей иллюстрацией данного высказывания является код, создаваемый другим приложением от Macromedia– Macromedia Director. Это приложение имеет собственный язык управления интерактивностью, называемый Lingo. Если мы хотим переместить головку воспроизведения к определенному кадру фильма, достаточно следующего фрагмента программы на этом языке:
on
ExitFrame me Go to Frame
2
End
Эта программа достаточно проста и понятна. Те же, кто мало знаком с приложением Director, могут пользоваться языком Lingo с помощью связывания встроенных в приложение фрагментов кода. Ниже приведен пример вышеописанного действия, реализуемого с помощью фрагмента сгенерированной приложением программы.
on
GetBehaviorDescription me
return
\
"Go To Frame X"
& RETURN & RETURN &
\
"Moves the playback head to the chosen frame when the user clicks on the sprite"
& RETURN
& RETURN & \
"Permitted Member Types:"
& RETURN & \
"Graphic Members"
& RETURN & RETURN &
\
"Parameters:"
& RETURN & \
"Go to which frame on MouseUp?"
end
BehaviorDescription
on
GetBehaviorTooltip me
return
\
"Use with graphic members."
&
\
"Moves the playback head to the specified frame on MouseUp"
"
end
Get BehaviorTooltip
И так далее для остальных 22 строк. А вот фрагмент, выполняющий реальные действия:
on
MouseUp me go MyTargetFrame
end
MouseUp
Эти строки скрыты в самой глубине сгенерированной программы. С первого взгляда кажется, что код избыточен. На самом деле это не так. Можно задать простой вопрос: "Как человек, который не знает языка, может создать команду, переводящую головку к заданному кадру?" Для этого и создается программа, фрагмент которой приведен выше и которая предвидит все потенциальные сценарии.
Вместо того чтобы отвергать код за его избыточность, задайте себе вопрос: "Выполняет ли команда то, что от нее требуется?"
Практически всегда ответ будет положительным. Для клиента самое главное, чтобы программа работала, а избыточен код или нет, его обычно мало волнует. Клиент практически всегда задает разработчику вопрос: "Программа работает?" Редко когда от него вы услышите вопрос о том, как она работает.
Другим аспектом этого вопроса являются объекты, обслуживаемые программой. В их числе специализированные объекты интерфейса, такие как кнопки и ссылки, а также общий вид дизайна страницы. Здесь фигурирует все тот же вопрос: "Выполняют ли элементы те функции, для которых они создавались?"
Когда же дело доходит до оптимизации, можно принять в расчет три ее уровня.
- Статическая. Узел представляет собой набор страниц HTML, использующих языки HTML, JavaScript и др. для реализации своих функций.
- Динамическая. Узел представляет собой набор шаблонов, в которые информация попадает с помощью программ среднего уровня, таких как ColdFusion. Такие узлы обычно отличаются сложностью, а их оптимизация требует высокого профессионализма программиста.
- Косметическая и функциональная. Это – самая простая область процесса, и поэтому странно, что ее часто обходят вниманием при оптимизации узла. Пользователи всегда хотят пользоваться Web-узлом без необходимости постоянного принятия решений. Нет ничего хуже узла, для работы с которым нужно руководство пользователя. Кнопки всегда должны выглядеть как кнопки, а не что-то другое. Ссылки должны быть интуитивно понятны. Общий дизайн страницы должен быть оформлен как шаблон, а часто используемые элементы страницы по необходимости должны быть занесены в библиотеку.
Существует множество способов оптимизации функций узла, а также программ, их реализующих.