Как далеко DevExpress получил с рефакторингом Javascript? - PullRequest
12 голосов
/ 12 марта 2010

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

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

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

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

Ответы [ 3 ]

21 голосов
/ 15 июня 2010

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

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

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

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

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

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

2 голосов
/ 12 марта 2010

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

return function(a) {
  var x = a.

Теперь я только что набрал это "." после «а», и я нажал «Tab» для автозаполнения. Что делать в IDE?

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

$('something').

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

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

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

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

0 голосов
/ 12 марта 2010

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...