Подтвердить что ты не робот

Как далеко продвинулся DevExpress с рефакторингом Javascript?

Более года назад я помню, как один из евангелистов DevExpress просматривал или, по крайней мере, продвигал богатый рефакторинг Javascript (за пределами только ограниченного intellisense) в оболочке Visual Studio, я вспоминаю часть линейки продуктов CodeRush/DevExpress. Я был взволнован.

При проверке сегодня (lmgtfy) я могу найти очень очень ограниченную ссылку на нее, только одну небольшую italtic-строку о бета-версии в описании продукта, без видео, без сообщений в блогах, без шума сообщества. Он упал? Vapourware? Плохая реализация, которую они даже не продвигают?

С Javascript, возможно, самым популярным языком программирования когда-либо и с виртуальной машиной для него практически на каждой машине за последние 10 лет, почему редактор так беден? (По сравнению с данными для Java и С#)? Вы видите, как у ScottGu хвастается, что у нас теперь есть jQuery intellisense, но сравниваем это с богатством поддержки С# в среде IDE, это шутка.

Кто-то однажды сказал, так как существует много стилей написания Javascript, богатая среда IDE (за пределами intellisense) с поддержкой рефакторинга сложна, но если несколько движков могут интерпретировать/компилировать JS с таким же результатом, конечно, это должно быть сложно проанализировать, чтобы поддерживать материал как переименовать переменную, извлечь метод, переместиться в другое пространство имен (или его мини-JS) и т.д. Я ошибаюсь?

4b9b3361

Ответ 1

CodeRush поддерживает пятьдесят два рефакторинга JavaScript:

  • Добавить разделители блоков
  • Добавить параметр
  • Нарушать аргументы
  • Параметры разблокировки
  • Случай к условному
  • Комбинированные условные обозначения (вложенные)
  • Комбинированные условные обозначения (параллельные)
  • Назначение сжатия
  • Сжатие с тернарным выражением
  • Конкатенатные строки
  • Условный к случаю
  • Создать объявление с несколькими переменными
  • Создать перегрузку
  • Создать метод Setter
  • Создать с выражением
  • Развернуть присвоение
  • Развернуть тернарное выражение
  • Метод извлечения
  • Сгладить условный
  • Для ForEach
  • ForEach to
  • Инициализировать условно
  • Встроенное недавнее назначение
  • Встроенный результат
  • Inline Temp
  • Inline With Statement
  • Ввести локальный
  • Ввести локальную (заменить все)
  • Ввести переменную результата
  • Аргументы по цепочке
  • Параметры очереди
  • Переместить объявление возле ссылки
  • Перенос инициализации в декларацию
  • Перейти к параметру
  • Удалить разделители блоков
  • Удалить параметр
  • Удалить избыточное условное
  • Переименовать локально
  • Параметры порядка
  • Заменить Temp с запросом
  • Заменить локальным
  • Обратный условный
  • Упрощение выражения
  • Сплит условный
  • Разделить условный (и дублировать блок else)
  • Разделить инициализацию из декларации
  • Объявление переменной с разделителями
  • Разделить строку
  • Разделить временную переменную
  • Разделить с выражением
  • Расширить область действия
  • Расширить область действия (продвигать в поле)

И восемь деклараций потребления и быстрого исправления:

  • Добавить контракт
  • Добавить Else Statement
  • Объявить поле
  • Объявить локальный
  • Зеркальный код
  • Реверс для цикла
  • Поворот на 90 градусов
  • Проверка орфографии

Кроме того, мы работаем над улучшением поддержки рефакторинга для выпуска 10.2. Мы также недавно улучшили Quick Nav, чтобы сделать навигацию к функциям JavaScript так же просто, как навигация в С# или VB. Это улучшение поступит в 10.2, но теперь доступно для клиентов CodeRush в ежедневной сборке.

Полное раскрытие информации - я возглавляю команду CodeRush в DevExpress.

Ответ 2

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

return function(a) {
  var x = a.

Теперь я только что набрал это "." после "a", и я нажимаю "вкладку" для автозаполнения. Что такое IDE?

В некоторых ограниченных случаях вы можете сделать некоторые догадки OK; Редактор может сделать некоторые предположения, если вы сказали, что используете jQuery, например, и он видит

$('something').

Ну, это достойная догадка, что выполнение API jQuery - это правильная вещь. Однако это никогда не будет намного лучше, чем предполагать. Даже с этим примером jQuery редактор по-прежнему будет сталкиваться с какими-то трудными проблемами:

$('something').each(function(_, element) {
  if (element.

После этого ".", что должно автообновить меня? Ну, супер-умный редактор может захотеть выйти на конечность и предположить, что "элемент" - это DOM node, но должно быть паранормально знать, какой тип DOM node.

Теперь, еще одна вещь, которую можно было бы сделать, это включить какую-то всеобъемлющую систему подсказок, чтобы программист мог прямо сказать редактору, что. Это потребует от меня немного внимания со стороны Javascript, но я думаю, что некоторые люди могут найти это полезным.

Ответ 3

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

Построение достойного программного обеспечения занимает много времени.