⚛ Реакт – хлам, раунд второй

Предыдущая статья на эту тему вызвала бурную дискуссию в комментариях. Отвечаем на популярные возражения любителей фронтенд-фреймворков.

Статья публикуется в переводе, автор оригинального текста Джейсон Найт.

В предыдущей статье «Реакт – хлам, и я вам это докажу!» был сделан ряд намеренных упущений и заявлений для того, чтобы оценить реакцию аудитории и стимулировать вовлеченность. Если бы вы прочитали мою статью о пропаганде, то смогли бы распознать ряд использованных техник.
Ознакомиться с оригинальной статьей на английском языке и комментариями к ней можно здесь.

Реакций было много – как положительных, так и, разумеется, отрицательных. В большинстве случаев – стандартные бессмысленные возмущения, подкрепленные плохим кодом или, в худшем случае, вообще ничем не подкрепленные. Однако среди них, к счастью, нашлись и хорошие обоснованные возражения, которые стоило бы обсудить. Этим мы и займемся.

Ты видишь только плохие стороны

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

В реальном мире я не видел такого приложения, построенного на React, Vue или им подобных фреймворках, которое не было бы с ног до головы пронизано проблемами юзабельности, доступности и эффективности. Я постоянно вижу, как мегабайты кода решают задачи, с которыми могли бы справиться килобайты. В ряде случаев то же самое можно сделать вообще без JavaScript!

Такое очень часто встречается, когда разработчики начинают превращать простые веб-страницы в "приложения". Эти недоприложения для всего подряд испортили user experience десяткам пользователей.

Нужно посмотреть, почему эти "плохие стороны" вообще существуют.

Документация – отстой

Один из самых популярных ответов в комментариях. Вы советовали изучить сторонние учебники по React вместо чтения официальной документации. Они гораздо лучше, говорили вы.

Хм, где же я слышал это раньше?

Точно, это же история HTML! Спецификация HTML написана сложным и кривым полуюридическим языком и доставляет реальную боль. Как будто ее сначала написал финн на шведском, затем русский перевел на японский, и в конце концов Google снова перевел ее на английский. Хуже всего, что документ, описывающий язык, на котором пишутся сайты, создан совсем не для пишущих сайты людей, а исключительно для разработчиков браузеров.

Именно из-за отсутствия адекватного официального первоисточника так много людей пишут плохой HTML. Точно такой же случай с документацией React. Пронизанные плохими практиками и бездумным использованием скриптов примеры совсем не способствуют появлению хороших разработчиков.

Плохая документация может убить хороший проект, а реально крутая документация может даже из плохого проекта сделать бомбу – см. jQuery.

Минутка ностальгии: в конце 80-х и начале 90-х разработчики были избалованы хорошей документацией. Если вы покупали компилятор Borland, то в комплекте получали 5 или 6 книг-руководств на совершенно понятном языке. Вот это были времена!

Документация React – чистой воды пропаганда с плохими и запутанными примерами кода. Это очень плохо! Самое плохое, что большинство защитников фреймворков не могут представить адекватных аргументов кроме этой самой документации.

Это просто примеры работы системы, их код не имеет значения

Универсальный довод, который приводили многие из вас.

Однако в этом подходе есть большая проблема. Реальная аудитория фреймворков – люди, которые не очень хорошо знают HTML/CSS/JavaScript. Они не способны отличить хорошие практики от плохих и просто слепо копируют этот кривой неэффективный код.

Если ваши примеры – хлам, то и код, который люди пишут на их основе, тоже будет хламом! А люди вроде меня увидят этот мусор и решат, что весь ваш фреймворк – мусор. Если вы не можете даже написать грамотный HTML, как я вообще могу доверить вам что-то более сложное?

***

Что же, это были более-менее осмысленные возражения. Остальные в основном тупо повторяли пропагандистскую ерунду, не подтвержденную фактами.

Фреймворки легче поддерживать

Да неужели? Больше работы, больше кода, разбросанного по всему проекту в виде спагетти.

JSX-разметка сама по себе – это запутанное беспорядочное спагетти. Вы создаете свои собственные XML-свойства и смутно надеетесь, что они больше нигде и ничем не используются (во имя… более чистого пространства имен? да, в этом есть смысл…), чтобы разделить вашу разметку по всему проклятому коду. В итоге вы вынуждены продираться через весь код в поисках того, что на самом деле будет выведено на экран (не факт, что это будет легко). Это правда "легче поддерживать"?

И ради чего? Хнык-хнык, я ни хачу учица пользоваться DOM?

Это напоминает плохие идеи вроде XSLT или создания собственных HTML5 тегов, что полностью убивает весь смысл семантики, которые возращаются к нам каждые 5-10 лет.

Но это я, конечно, застрял в прошлом, потому что указываю на то, как вы заново копируете вещи, которые уже плохо себя показали.

"Легче" и "лучше" – это сверкающие маркетинговые обобщения, за которыми редко стоят реальные факты. Как будто вам дали двухлитровую бутылку кваса, на которой большими буквами написано – "НА 33% больше". А внизу мелким шрифтом "чем в нашей полуторалитровой бутылке". Потрясающе!

Так сильно стараясь "упросить" вещи, вы фактически усложнили свою задачу.

Миллионы сайтов используют фреймворки, они не могут ошибаться

Типичный эффект присоединения к большинству ("эффект фургона с оркестром", bandwagon fallacy). Если все лемминги бегут прыгать с обрыва, нет причин следовать за ними.

Если говорить о больших сайтах/компаниях, они часто сталкиваются с огромным техническим долгом. Я знаю об этом из первых рук, так как мне доводилось их консультировать. Изначально они даже не подозревают о таких проблемах, которые, однако, могут стоить им дохода и репутации.

Этот эффект может принимать самые разные формы – от заискивания перед создателями до симпатии к громким именам, которые используют продукт. Однако это не фактические аргументы, а лишь средство манипуляции. Большинство тоже ошибается.

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

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

Наказание эхо-камеры

У людей есть особенность: если им что-то нравится, они, скорее, ничего не будут делать, чтобы показать это, и наоборот, если что-то не нравится, они обычно это проявляют. Поэтому каждый "лайк" обычно ценнее, чем "дизлайк".

Однако очень часто мы сталкиваемся с эффектом эхо-камеры.

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

Имеем то, что имеем. Хочешь добиться успеха и получать деньги на настоящей работе – заткнись и используй то, что используют все.

Это еще больше заставляет думать, что React – это скорее маркетинговая афера, чем нормальная система с реальными преимуществами. Даже если бы он был хорошим, уже этого достаточно, чтобы я хотел с ним бороться.

***

Значительное количество содержательных ответов на предыдущую статью несколько смягчили мое мнение о React и тех, кто его использует. Я все еще думаю, что это хлам, но теперь немного лучше понимаю, почему вы мне не верите и выбираете его (если это не банальное воздействие маркетинга).

Однако в целом многие аргументы "за" только больше доказывают, что это мусор. Документация – отстой, примеры – отстой и куча пропагандистских и логических заблуждений вокруг него. Все это очень напоминает секту и вызывает отвращение, если вы распознаете манипуляцию.

На мой взгляд, у этой методологии нет никаких преимуществ перед традиционными, а результаты ее использования (плачевные) я вижу постоянно.

Источники

ЛУЧШИЕ СТАТЬИ ПО ТЕМЕ