masterspammer (masterspammer) wrote,
masterspammer
masterspammer

Category:

Проект, нашёптаный головными тараканами

не Гербалайф не Temple Os

Сама по себе идея возникла давно и лет 10 назад была в изрядной мере воплощена, так что конструктивное доказательство возможности у меня вот тут рядышком (но по моим нынешним представлениям о прекрасном это лютейший говнокод, так что не покажу, sorry). Но за 10 лет был у меня опыт разработки одного проекта (какого - неподзамочно писать не буду), и мнение

Итак, чего хочется; кратко - писать интерфейс (в основном веб) и не блевать при этом; по пунктам:
1. писать код, а не разметку, где-то внутри там возможно DOM (а возможно и canvas), но я знать этого не хочу как только можно долго; всё скрыто абстракцией, создаю объекты, работаю с ними, как они выглядят, в коде не трогаю.
2. писать простой ООП-код (в случае JS - прототипное ООП) - лишних абстракций мне не надо, декларативщины не надо (вот тут я очень хорошо знаю, о чём говорю), каких-то своих сущностей, не имеющих отношения к интерфейсу, тоже.
3. ну и чтоб это желательно не требовало каких-то препроцессоров, кросс-компиляторов, не диктовало свою там экосистему и архитектуру.

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

Теперь аргументация всех этих пунктов.

1. от противного; доводилось разрабатывать большой и сложный проект с богатым интерфейсом на небогоугодном Flex. Внутри там ActionScript и XML - вот как раз то самое смешение кода и разметки, причём тут у нас довольно хороший случай - код и разметка хорошо друг с другом согласованы, но... в итоге копипаста на копипасте - выделение абстрактного класса от необходимости разметки не избавляло, часть поведения и внешнего вида оказывалось в разметке и поддерживать было трудоёмко (конечно, можно было многое - почти всё - сделать стилями, но язык провоцировал на другое - правильно сделать было труднее, чем неправильно), поиск, замена... При этом трудно было сделать чтоб разные экраны и формы выглядели и вели себя одинаково, то есть как раз то, что должно получаться само - Swing мы знали и вспоминали часто, равно как например и GWT... до swing этому проекту было далеко.

2. как только появляются свои абстракции (особенно любят на js своё наследование делать), то работа кода перестаёт быть прозрачной как миниум для IDE (сразу отдельный плагин нужен), а так же линтеров, анализаторов и прочих подобных полезных утилит. Декларативное же описание (и сюда же передача словаря параметров) ведёт к тому, что обнаружение ошибок уровня "букву пропустили" откладывается на потом, особенно если параметр необязательный, а ошибка того же вида в методе setDefaultValue сразу же вылезет исключением. Если есть армия тестеров, то будет им работа, а у меня армии нет, так что...

3. так проще использовать и легче обнаруживать/исправлять ошибки особенно в режиме "с наскока" или не на своём компьютере - мне показывают что что-то не то и я или могу войти в отладчик или мне потом пытаться это воспроизвести; имея опыт и того и другого, я определённо чувствую разницу. Да, а экосистема и архитектура могут уже быть там, где я хочу использовать библиотеку, что - борьбу устраивать?

Не факт, что я вот сяду на новогодних праздников и начну рефакторить то, что есть, но мои мысли примерно такие.
Tags: javascript, Планы, Философское, ХочетсяСтранного
Subscribe

  • Сделал намагничивалку

    Пока заряжаю до 250 вольт из 400 возможных, магнитную систему от 1А22 перемагничивает наизнанку с одного импульса. На шунте наблюдается что-то в…

  • Не прошло и полвека

    Близнецы – явление, что ни говори, редкое… – Хороший сюжет, – вполголоса сказал Слава. Ярослав удивленно поднял глаза.…

  • Затмение ума

    Ковыряясь с динамиками нашёл вот-что. У 1А-20 после всех доработок импеданс на переменка не 50 ом, а скорее 30; точнее - 50 это не полка, а остаток…

  • Post a new comment

    Error

    Anonymous comments are disabled in this journal

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

  • 0 comments