Аккурат в канун Дня программиста выпало одно из нелюбимых занятий: писать Яваскрипт. Почему нелюбимых? Во-первых, потому что я постоянно забываюсь и в процессе сбиваюсь на PHP :-) Во-вторых, даже если написано правильно, не факт, что будет работать везде (кто-нибудь, убейте Майкрософт. И Оперу!).
Тем не менее, при реализации eye candy для сайта «Фортуны» пришлось описывать подсвечивание символов на автомобильной ручке передач в зависимости от того, в какой области меню гуляет курсором посетитель.
У любой программистской задачи есть три решения:
- Тупо описать процесс, уподобив себя Ассемблеру. Много обезьяньей работы, мало отладки. При изменении условий почти всё переписывается заново.
- Создать изысканный и интеллектуальный код, предусматривающий все возможные и невозможные условия, самостоятельно находящий все данные и вызываемый один раз и без аргументов :-) Три дня его отлаживать, потом пять лет пользоваться.
- Средняя линия: где можно — тупо, где нужно — поизысканнее. Чтобы пройти такой линией, нужно всё время напоминать себе, что ты всего лишь описываешь переключение картинок, не несущее никакой смысловой нагрузки :-)
В итоге задача решилась довольно быстро (решилась бы ещё быстрее, не пытайся я делать конкатенацию строк точкой, а не плюсом) — добавлением к вставленному Dreamweaver-ом Яваскрипту двух функций. Одна возвращает в исходное состояние все переданные в аргументах объекты (снимает выделения для перечисленных поимённо позиций на ручке скоростей). Вторая — вызывает первую и устанавливает выделение на нужную позицию. Обе в конечном итоге пользуются сакраментальной MM_swapImage от Macromedia :-)
Следование средней линии в этом случае заключается в том, что функция my_restore() могла бы быть и поумнее: скажем, сама находить объекты и восстанавливать их состояние, пропуская указанный в аргументе. Но в коде она вызывается лишь пять раз :-) Copy+Paste с минимальной правкой — гораааздо быстрее, чем написание Окончательной Функции. А вот вызов функции hilite() нужно прописать на каждом линке, а их несколько десятков :-) поэтому она должна вызываться просто, с одним очевидным аргументом.
В общем, не бог весть какой программистский подвиг (я всё это время говорил о 15 строчках кода :-D ), но даёт повод поразмыслить и пообобщать, а это, в итоге, и отличает нашу работу от обезьяньей.
Комментариев нет:
Отправить комментарий