Домашка. Рома и отель

May 23, 2011 14:29

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

Но в этот раз я не прокину, потому что я уже всё сделал. Честное слово:


В этот раз домашку придумал Рома Воронежский. Ему слово:

Представим, что мы хотим забронировать номер в отеле. Мы указали даты заезда и отъезда, выбрали город, и все что нам осталось - это указать количество нужных номеров и людей, которые будут в них проживать.

Задача:
Сделать удобную форму, в которой можно добавлять людей, а также распределять их по номерам. Людей необходимо разделять на взрослых и детей, при этом для каждого ребенка важно указать конкретный возраст.

К примеру, компания у нас будет такая:
6 взрослых, и 4 ребенка разных лет, которым нужны 5 номеров.
На выходе - картинка размером 800×400 пикселей (в любом формате - gif, jpg).
Это задание из студийной вакансии на должность дизайнера интерфейсов (потом её зачем-то переименовали в просто вакансию дизайнера).

Моё решение
Завтра, видимо, я не смогу опубликовать результаты, поэтому публикую сегодня.

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











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

Как я установил возраст детей поисковики требуют потому что у разных отелей разные предложения для несовершеннолетних. Некоторые с 12-летних не берут, а другие и за двухлетнего платить заставят.

Мини-расследование
Первое что мне захотелось сделать - найти доказательства технической возможности и сделать три кнопки с условным значением: «Добавить взрослого», «Добавить ребенка за которого надо платить», «Добавить ребенка за которого не надо платиь».

Я поговорил с крутым специалистом по букингу, но, к сожалению, он сказал, что что-то можно придумать зная только конкретную систему бронирования. И вообще он сказал, что задание тупое в том смысле, что сделать на его основе интерфейс реальной системы невозможно, слишком абстрактно всё.

Поэтому я забил и решил решать задание точно как дано, относясь к нему как к задаче из учебника.

Имена
Самое главное изобретение, которое я сделал - имена. Смотрите, там написано, что мы бронируем отель и все указали уже и осталось только добавить людей и у нас 6 взрослых, и 4 ребенка разных лет, которым нужны 5 номеров. Причем просят сделать возможность распределения по номерам. А это значит, что мы уже всё, пиздец, въезжать собрались. И это никакой не поиск отелей, где мы может поищем, поищем и пойдем на другой сайт (тут надо делать супер простую форму в самом начале, а потом давать возможность фильтровать результаты, указывая подробности про количество людей и пр.), это именно бронирование.

А если мы бронируем и уже точно знаем кто поедет и даже кто с кем жить будет, то нам нужны имена! Мы же не будет думать: так «человек №1» и «человек №2» в первой комнате будет жить, а «человек №3» в третьей. Мы будем думать, что Витька, сын Петровны, поедет со своей телкой Машей и им надо отдельный номер.

А раз нам удобно думать про имена и мы уже въезжаем, то нам не впадлу будет их ввести. Для интерфейс тут много плюсов:
1. Интерфейс просит ввести данные в том формате, в котором они у человека в голове.
2. Именами легко оперировать. Вместо того, чтобы в комнате 1 убавлять количество людей на одного, а в комнате 2 прибавлять (всё это с помощью комбобоксов :). Мы просто решаем, что пусть Дашка живет с Витькой и Машкой.
3. Когда человек ввел уже все данные, ему становится жалко потерять свой труд и он запросто может на что-то плохое забить и поехать именно в этот отель. Таким образом повышается работоспособность системы.
4. Имена нам могут пригодится в других местах. Всегда приятна, когда система проявляет заботу, обращается по имени, сама заполняет поля форм и пр.

Интерфейс



Старался сделать так, чтобы комментарии не требовались, поэтому их нет.

Я сначала хотел заставить для всех писать возраст и сделать одну кнопку. Зачем просить пользователя определять ребенок чел или нет? Но потом не стал так делать. Просто в подобных системах, как мне известно, есть стереотипы, которые опасно ломать. Например в бронировании билетов так делать не следует, потому что люди знают, что детям дешевле, а младенцам бесплатно, и если им явно не написать «Добавсить младенца, который летит бесплатно» они будет волноваться, а не пререплачивают ли они, а точно ли система дешевле сделала для ребёнка и т. д.

То что я повторил кнопки - особенно круто, потому что очень просто для понимания. Привет Чикуёнку.

Недостатки
Во-первых, я забыл про удаление. Вспомнил о нем, когда уже форму заполнял на сайте Студии и забил, потому что в задании не требовалось, места мало и надо всё переделывать.
Во-вторых, чартджанк на комнатах. Тут я себя прощаю, потому что очень хотелось так их заштриховать. Очень :)
В-третьих, очень херово, что я не сделал детей и родителей разного цвета. Чисто проебал, даже мысли не возникло.
Дальше графика сосет, кнопки не крутые и пр. Но это мой текущий уровень красивых кнопок.
Еще я бы наверно сейчас не стал мельчить и сделал бы всплывающую форму для редактирования имен и возраста, чтобы места было вдоволь. И вполне возможно выбросил бы квадратно-гнездовую систему и сделал бы комнаты просто этажами. Правда могло бы не влезть в 400 пикс.

Дальше вы мне расскажите.

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

UPD
Еще одно обсуждение этого же задания http://valiullin.livejournal.com/83490.html

Комментарии скрываются до вечера воскресенья, когда я представлю решение и прокомментирую ваши ответы.

Раньше домашки выходили регулярно, а теперь, когда получится, но вы всё равно присылайте свои задания на kolan@ksoftware.ru и если задание окажется интересным, оно будет опубликовано.

Воронежский, Интерфейс, Лебедев, Домашка

Previous post Next post
Up