Костя
а всякие бабели это тоже костыли
все костыль, что не ваниль
Дима
У нас тут технологическая сингулярность вовсю)) Релятивистские скорости прогресса и всё такое
Vyacheslav
все костыль, что не ваниль
но при этом все является ванилью
Костя
ваниль шредингера?
Konstantin
обмазаться ванилью
Oleg
ваниль шредингера?
Это когда устраиваешься в "активно развивающуюся компанию с дружным коллективом" и ещё не видел их код
Дима
Дима
Тру стори
Дима
У меня прям каеф был недавно, когда смог выпилить лютую тонну костылей и олдовых подходов из довольно большого проекта в автоматическом режиме
Дима
Выпилил весь лодаш кодмодами, переписал бинды на class properties ну и так далее
Дима
Alex
У меня прям каеф был недавно, когда смог выпилить лютую тонну костылей и олдовых подходов из довольно большого проекта в автоматическом режиме
Человечище. Не то, что некоторые, у которых "ой, у вас код говно, я не буду тут больше работать"
Дима
Автоматическом? Расскажешь?
eslint-prettier с кастомным строгим конфигом — заменил var/let на const, function на стрелки, ну в общем всё что может eslint кодмоды — codemods, способ запрепроцессить весь проект по определенному алгоритму Фейсбук любит экономить деньги и поэтому мигрирует так всю свою кодовую базу
Дима
База — https://github.com/facebook/jscodeshift
Дима
Кодмоды https://github.com/cpojer/js-codemod/ https://github.com/reactjs/react-codemod/tree/master/transforms
Alex
Зачем менять var/let на const?
Дима
Зачем менять var/let на const?
А нафига они нужны?
Дима
const везде по умолчанию — это единственный нормальный способ
Alex
Где-то на задворках сознания лежит инфа, что константы - это не круто
Дима
Задворки надо проветривать)
Alex
Объективно почему const?
Дима
Это не константы а константные ссылки, это значит что никто нечаянно не перепишет эту переменную. То есть, разумеется регулярно встречаются случаи когда нужно делать let, и тогда мы сразу видим, что эта переменная будет меняться и с ней надо быть внимательнее
Oleg
Это ФП просто
Дима
То есть просто нет смысла писать let/var если ты объявляешь переменную один раз. И в 90% кода будет на самом деле именно так
Дима
Не
Дима
Фп это иммутабельность, а я сейчас не про нее
Oleg
А, в этом смысле, тогда да
Alex
В чем разница между константами и константными ссылками?
Дима
Фп это иммутабельность, а я сейчас не про нее
Просто декларация намерений — смотрите, в эту переменную я собираюсь записать другое значение
Lev
Var deprecated
Дима
Константная ссылка — это когда мы просто не можем подменить один объект другим
Дима
А константа — когда вообще не можем менять объект
Konstantin
Var deprecated
нет, пока бабелем пользуется кто-то
Alex
Я примерно так и подумал
Konstantin
ну как какая связь
Konstantin
бабель же позволяет все эти современные херни использовать
Lev
Да нету её, там тупо используется последняя версии es
Lev
А es хочет убрать var
Дима
Комитет, разрабатывающий стандарт js не может себе позволить быть безответственным и поломать миллиарды (без преувеличения) сайтов
Дима
Поэтому var с нами надолго, просто можно его не использовать
Дима
Критичный к производительности код (десятки тысяч вызовов в секунду) у меня транспилится в var, и это нормально, потому что я об этом var могу не думать вообще, а писать в нормальном современном стиле)
Vyacheslav
Ломать не обязательно, они могут порекомендовать не использовать, deprecated != не рабочий
Дима
Там довольно изящный способ сделан для gracefull deprecation)
Дима
Например MooTools пишет в прототип Array переменную keys
Дима
Сейчас у нас это, как мы знаем, функция
Дима
Не сломано ни то, ни другое javascript — ето питон, который смог
Lev
let лучше var и var его не заменит
alex
var var var
Oleg
var/
Oleg
Лет и конст это когда ты точнее говоришь что ты хочешь
Дима
Oleg
Вар это когда путешествие через уровни вложенности
Дима
Danil Á.
Oleg
var let = 'const'
Дима
Ладно, я просто var с русской a написал)
Danil Á.
Oleg
А с лет - работает
Danil Á.
безумие
Oleg
И переопределяет
Дима
mad js
Lev
Путешествие let, объявление более на высоком уровне
Oleg
Можно убить весь входящий код переопределив ключевое слово, да
Danil Á.
в скоупе функций и undefined переопределить можно
Дима
Можно убить весь входящий код переопределив ключевое слово, да
Ты ж не переопределяешь ключевое слово) Синтаксис языка позволяет отличить кейсы использования переменной и объявления let значения
Oleg
Можно убить весь входящий код переопределив ключевое слово, да
На самом деле конечно же нет, js умеет отличать 🙂
Lev
class BaseClass { static init() { return new this(); } static get value(){ return 'Base'; } constructor() { this.val=this.constructor.value; } } class SecondClass extends BaseClass { static get value(){ return 'Second'; } constructor() { super(); } } const ts=SecondClass.init(); console.log(ts.constructor.name); // SecondClass console.log(ts.val); // Second Ответ на мой вопрос
Lev
Почему?
Oleg
const тоже
Дима
Есть нормальные предопределенные языком способы, бессмысленно делать из js пхп
Lev
Не, надо тип классов организовать для crud