Оригинал vs клон
Aug. 25th, 2011 03:04 am![[personal profile]](https://www.dreamwidth.org/img/silk/identity/user.png)
Я присмотрелся к клону повнимательней – и по нему видно, что разработка происходит прямо сейчас.
Там любопытное происходит. Безымянный клонер делает все ошибки, которые я делал 8 лет назад, когда писал первую считалку. Я их разберу. (Дальше будет интересно только веб-деятелям и отчасти дизайнерам. Там довольно много.)
UTF8 vs CP1251
Юникод рулит. Когда я вижу такое вот, мне хочется блевать.
В силу того, что я из полиграфического дизайна, где культура типографики с вебом не сравнима, мне всегда нужны были правильные тире, кавычки и знаки умножения «–×–». Поэтому я никогда ничего не делал в cp1251. Мне вообще странно, что кто-то этим в вебе ещё пользуется.
Платформа vs быдлокодинг
Оригинал – типа как на liteprint.me или ermouth.com/bulatova/ – это по преимуществу javascript, который генерит html “на лету” по описанию полей считалки и формул взаимозависимостей.
То есть, вместо того, чтобы писать стопицот <div>’ов со стилями и навешивать ручками обработчики, я в специальную функцию отсылаю конструкцию типа
{qty: {value:”1”, label:”К-во”, type: ”int”, increment:”1”, min:”1”, max:”100”, postfix:”шт”, price:”this.value*5”, variants:[1,2,5,10]}}
и эта функция рисует мне поле ввода количества с кнопочками, единицами измерения и предопределенными вариантами количества рядом с полем ввода. Она навешивает на поле ввода все обработчики, чтобы цена (и другие зависимые поля, если есть) пересчитывались при каждом нажатии клавиш, а не только при потере фокуса.
Чувак, поглядев на мою считалку и на её код, видимо решил что это слишком сложно. И стал рисовать все эти стопицот дивов руками.
Конечно, он запутался в обработчиках, и поэтому цена то автообновляется, то нет. Естессно, что многократный повтор одинаковой разметки занимает много места. Естессно, весь код из костылей.
Итого.
У меня 4 зипованных запроса к серверу в сумме на 64 Кб – и две считалки уже работают и дальше грузят только картинки. К родному серверу запрос на 19 Кб, остальное с CDN.
У чувака – одна считалка на 200 Кб в 11 зипованных запросах. Все запросы к себе на сервер. Плюс у меня отдается статический код, а у чувака – ещё и два обращения к скриптам.
У меня добавление новой считалки в набор – это примерно +1…10 Кб, у чувака 30+ Кб. Время, полагаю, отличается примерно на порядок.
Итого, по кумулятивному показателю, кривей раз в 50 бгг
Это потому, что платформа всегда выигрывает. Я это понял в середине первой считалки, что я делал. Только описание у меня было тогда не в json-формате, а в xml.
Платформа предполагает обдумывание, а не бросок с места в карьер.
Придумывание vs сдирание
Самый лучший вариант понимания дизайна чего угодно – это когда ты сначала придумываешь это что-то в голове, думаешь “вау, какой я клёвый”… И тут бац, и видишь это уже кем-то сделанное, да ещё нередко покруче, чем тебе думалось.
А когда показывают пальцем на сэмпл и говорят “братюня, мне надо вот так” – а думать неохота – появляется например вот такое (сначала оригинал, потом – клон).
То-есть, клонер скопировал компоновку, не понимая вообще зачем это всё. Жопа тут во всём, начиная с раскраски заканчивая этим “прово… Ещё…”. Причём чувак уже пишет букву ё, но не видит при этом, что по сути этими своими “1. Класс размещения” написал нумерованный список в строку. И ему не влом, что у него в одном предложении два двоеточия.
У меня тоже не айс, кста – мне было склонять под числительные лень. Но у меня и бета 0.1.
Вот кнопочки “плюс-минус” ещё, нопремер:
Ну то-есть ясно где тут кто бгг. У меня сразу видно цифру, а только потом кнопки и рамку. И кнопки внесены в поле ввода – это место экономит и после поля ввода можно написать единицы измерения.
У чувака этот элемент управления сначала орёт “блиоооо, мой создатель первый раз в жизни сделал кнопки плюс-минус, и поэтому хуйнул их с пузырями, бевелом, тенью и градиентом, чтоб все видели как он ниибацца крут!!!!1111”. Потом длинная колбасина рамки (уголки – png-шки о_О). И только потом уже цифра. Безразмерная.
Или вот это . То-есть, у меня тоже есть элемент управления с плюсиком, он добавляет в панель сбоку вариант расчёта. А тут плюсик поставлен просто из обезьянства, ну клон – чё уж.
То-есть, вместо того, чтобы решать задачу теми способами, что умеет, безымянный автор решил пойти на поводу у заказчика и обрёк себя на адский гемор.
Судя по характерно-беспомощному javascript-коду и именованиям констант в стиле DESC_ANNOUNCE_LEN, яваскрипт для чувака вообще не родной, он на чем-то типа php пишет. Да и jQuery тоже неродной – когда он подключен, код типа document.getElementById – это дрочево.
Писал бы себе форму классическими дропдаунами и чекбоксами с отправкой на сервер, было бы аккуратнее, короче и не так беспомощно. А тут типа сразу чувак в дамки решил.
И получилась в результате так себе. Чтобы клонировать по-хорошему, надо для начала понимать, что ты клонируешь и для чего.
Завершающий аккорд
Моя компоновка считалки специально заточена под тыканье и листание пальцами и намеренно напоминает компоновки соцсетей, от которых никто не ждёт, что они поместится по вертикали на один экран.
Компоновка клона напоминает мою компоновку, расписанную в цвета детской неожиданности и взрослой ожиданности, заляпаную грязными пятнами кнопок и батонами рамок – и адски глючит при листании и на айпаде, и на маке. И некорректно работает при наборе цифр с малой клавиатуры в Хроме – обработчики событий кривые.
И даже три оригинальные фичи – предупреждение об ошибке с кнопкой “Исправить”, всплывающее окно заказа и приколоченная шапка – глючат со страшной силой.
Не уважаю адски. Клон вышел недоношенный.
no subject
Date: 2011-08-25 01:01 am (UTC)Про кнопочки - хорошо понимаю :) Когда я был маленький и в первый раз в жизни делал крутые UI контролы, они были задуманы, чтобы бросаться в глаза :) (Понятно, что если я сам писаю кипятком, то и все остальные будут просто счастливы заценить, не так ли? :)))
no subject
Date: 2011-08-25 01:23 am (UTC)