Как далеко DevExpress добирался с рефакторингом JavaScript?

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

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

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

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

12
задан MattX 12 March 2010 в 11:10
поделиться

3 ответа

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

return function(a) {
  var x = a.

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

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

$('something').

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

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

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

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

2
ответ дан 2 December 2019 в 06:44
поделиться

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

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

0
ответ дан 2 December 2019 в 06:44
поделиться

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

  • Добавить разделители блоков
  • Добавить параметр
  • Разделить аргументы
  • Разделить параметры
  • Case в Conditional
  • Объединить Conditionals (вложенные)
  • Объединить Conditionals (параллельные)
  • Сжать присваивание
  • Сжать в тернарное выражение
  • Конкатенировать строки
  • Conditional в Case
  • Создать декларацию нескольких переменную
  • Создать перегрузку
  • Создать метод сеттера
  • Создать заявление With
  • Расширить присваивание
  • Расширить тернарное выражение
  • Извлечь метод
  • Сплющить условные
  • For к ForEach
  • ForEach to For
  • Инициализировать условно
  • Inline Recent Assignment
  • Inline Result
  • Inline Temp
  • Inline With Statement
  • Introduce Local
  • Introduce Local (replace all)
  • Introduce Result Variable
  • Line-... вверх Аргументы
  • Line- вверх параметры
  • Переместить декларацию рядом со ссылкой
  • Переместить инициализацию в декларацию
  • Переместить в параметр
  • Удалить разделители блоков
  • Удалить параметр
  • Удалить избыточное условие
  • Переименовать локаль
  • Переупорядочить Параметры
  • Заменить Temp на Query
  • Заменить на Local
  • Обратный условный
  • Упростить выражение
  • Разделить условный
  • Разделить условный (и дублировать блок else)
  • Разделить инициализацию от декларации
  • Разделить мульти переменных
  • Разделить строку
  • Разделить временную переменную
  • Разделить с утверждением
  • Расширить область применения
  • Расширить область применения (продвинуть в поле)

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

  • Add Contract
  • Add Else Statement
  • Declare Field
  • Declare Local
  • Mirror Code
  • Reverse For Loop
  • Rotate 90 Degrees
  • Spell Checker

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

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

21
ответ дан 2 December 2019 в 06:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: