По совету друга записался в школу программирования «Hexlet» https://ru.hexlet.io/ Я решил в очередной, в 3 раз выучить ReactJS. Плох тот ёж, который не мечтает стать противотанковым. Избрал профессию «Фронтенд JavaScript» и начал курс «JS: React». Оказалось, этот курс идёт предпоследний в этой профессии, но и я во фронтенде тоже не первый день. Так что я решил начать с конца. Курс как ни странно, мне понравился. Курсы обычно строятся по следующему принципу, есть говорящая голова, которая объясняет теорию и решает в прямом эфире какую-то задачку и дальше идёт домашка. Качество домашки остаётся на совести ученика и преподавателя. Здесь всё по-иному, даётся чуть-чуть теории, упражнение на усвоение теории и упражнение. Упражнение устроено хитро, поднимаются docker-контейнеры и в них нужно решать задачу. И для решения задачи представленной теории сильно недостаточно приходится искать решение в интернете.
При чём задача оценивается по unit-тестам и линтеру ESLint https://eslint.org/. Линтер - это инструмент анализа кода для выявления проблемных мест в JavaScript. Т.е. он показывает глупые ошибки у программистов и приводит код всех программистов к единому стандарту. В php есть аналог Psalm https://psalm.dev/
Большая часть времени при выполнении первых упражнений уходило на «борьбу» с линтером, то пробел отсутствует, то он лишний, то точки с запятой не хватает. При чём что лишний пробел он сообщает, не предупреждением, а именно ошибкой. Вымораживали его сообщения: «ВНИМАНИЕ, в коде обнаружилось 10 ОШИБОК». При чём большая часть ошибок, то пробел забыл поставить, то точку с запятой.
Написал в тех. поддержку они сообщили, что в этом курсе используются набор правил линтера от airbnb https://github.com/airbnb/javascript и eslint plugin react https://www.npmjs.com/package/eslint-plugin-react#recommended
Я считаю ошибки линтера не стоит игнорировать. Кстати, при выполнении упражнений, когда я один раз перепутал условие, линтер мне сообщил, что кусок моего кода не будет выполнен никогда :-)
Поэтому я решил поднять тестовый проект на phpStorm и прикрутить туда линтер. Дело в том, что в eslint встроена автокоррекция ошибок, все пробелы, точки с запятой он расставляет сам. Но в редакторе от хекслета этого нет и сам встроенный редактор до IDE phpStorm не дотягивает достаточно сильно.
Скажу сразу убил несколько часов скрещивая phpStorm и eslint, настраивал по всяким хитромудрым мануалам и ничего не получалось. Оказалось, всё банально, надо было просто установить eslint phpStorm автоматом подхватывал конфигурацию и правила, а затем для автофиксации изменений, необходимо было просто назначить сочетания клавиш и всё. Работы по факту на 5 минут, но это в последних версиях, а вот в старых нужны были ухищрения. В конце было интересно наблюдать, я специально минифицировал код, нажимаю 3 клавиши, и код отформатирован и проверен на ошибки от eslint.
Что ещё понравилось. Я выстрадал, написал код, почти исповедь. А потом сравниваешь своё решение с решением учителя и понимаешь, что написал говнокод. Отображение смешивается с логикой, проверка входных параметров слабая. Код модульные тесты проходит, но не больше. Но теперь смотрю на код преподавателя и совершенствую свой. Каждый выбирает свои способы ошибаться.
Но за всё хорошее надо платить, базовые курсы бесплатно, а вот за более серьезные необходимо вносить плату 24$/месяц. Вот, что крупно не понравилось в этом сервисе, оплата только пластикой картой. А при сочетании 2-х факторов: передача всех данных моей карты и подписка, у меня сразу перед глазами возникает знак: «Не влезай убьёт». Я просто пару раз накололся, хитроумные ребята продают услугу, собирают данные карты, а потом каждый месяц начинают списывать крупные суммы: за тех. поддержку, сервисное обслуживание и т.д. И вернуть эти деньги невозможно. Я уже и в банк ходил, и им писал, деньги не вернуть никак. Потом в инете почитал, у ребят бизнес такой. В результате, заблокировал одну карту и выпустил новую. Поэтому, когда в Хестлет предложили взять данные моей карты и оформить подписку, я крепко задумался. На битву со злом, взвейся сокол – козлом, но мне помог вечно зелёный банк, который выпустил дополнительную виртуальную карту Visa, на которую я деньги буду переводить только, тогда, когда понадобиться, но не раньше и никакой автоматизации вывода денег без моего согласия. А в обычное время на этой карте будет 0. Почему в сервисе не реализована оплата через Яндекс.Деньги, Webmoney, Qiwi мне не понятно.
Обучение я продолжу, надеюсь 3 попытка будет удачной. Если я захочу выучить ReactJS, кто же меня остановит? :-)