September 15th, 2021

Book

Мини-туториал по вебсторму

1. Жмёте 2 раза шифт, набираете scr f ENTER (scratch file), выбираете жс

2. туда пастите это (это риал ворлд экзампл)
class AWSXRay {
  getSegment() {}
}

async function captureWithSegment (annotation, callback) {
 
}

module.exports.handler = async (event) => {
  console.log(event)
  const parentSegment = AWSXray.getSegment()
  return await captureWithSegment('annotation_metadata', async (subSegment) => {
  })
}
3. Курсор на первый async после handler, 2 раза Ctrl-W, Ctrl-Alt-M, вводите captureHandler, Enter

4. Наводите на async последний в captureHandler, 2 раза Ctrl-W и Ctrl-alt-p. Стрелкой вниз выбираете сaptureHandler, энтер. Убираете галку optional parameter, жмёте Enter ещё раз.

Ну и я знаю людей, у которых вот эти операции все в подкорке сидят, на уровне d/fun в виме ("удалить до ближайшего fun"). Oни шлёпают их со скоростью набора, не задумываясь, и говорят, что в результате у них руки перестают отставать от головы, и приходится боттлнек в мозге тренировать, чтобы быстрее думать.

Вот такому вебсторм-фу мне хочется научиться. Ну и вот задача со звёздочкой: представьте теперь что функция принимающая subSegment, использует event (например return await event.foo()). Есть ли маршрут, и если красивого маршрута нет - то какой самый простой вариант?

Я в процессе ещё поразился, как снижается когнитивная нагрузка. Поскольку джун спрашивал а как это функция возвращает функцию что ли? Ну и я приготовился в голове своей это всё прорабатывать в процессе писания. Но решил заебашить через вебсторм, в рамках обучения меня вебсторму, и обнаружил, что внезапно это лишние мысли, ты экстрактишь и не думаешь о деталях экстракции, а как оно там заэкстрактилось и что это в результате. Только результат контролируешь, правильное ли действие сделал, но это гораздо легче, т.е. "ой как это оно тут... а точно же!". Это не то же самое, в плане когнитивной нагрузки, что самому придумывать, как оно тут должно быть.

Ну и вопрос залу: а в вашем редакторе как это делается? Например в VSCode же тоже рефакторинги есть. Интересно сравнить юзабилити.