DevExpress在Javascript重构方面有多远?

Mat*_*ttX 12 javascript refactoring devexpress

一年多以前,我记得看过一位DevExpress福音传教士在Visual Studio shell中预览或至少推广丰富的Javascript重构(超出有限的智能感知),我记得部分CodeRush/DevExpress产品线.我很兴奋.

今天检查(lmgtfy)我只能找到非常非常有限的参考,只有一个关于产品描述中的beta的小讽刺线,没有视频,没有博客帖子,没有社区动态.它掉了吗?雾件?执行不力,他们甚至没有推广它?

Javascript可能是有史以来最流行的编程语言,并且在过去10年中几乎每台机器上都有一个VM,为什么编辑器支持这么差?(与Java和C#相比)?你看到ScottGu吹嘘我们现在有jQuery intellisense,但在IDE中它与C#支持的丰富性相比,这是一个笑话.

有人曾经说过,因为有很多写Javascript的风格,富有IDE(超出intellisense),重构支持很难,但如果有几个引擎可以解释/编译JS同样的结果肯定应该很难分析它来支持像重命名变量这样的东西,提取方法,移动到另一个命名空间(或它的JS迷你)等.我错了吗?

Mar*_*ler 21

CodeRush支持52个JavaScript重构:

  • 添加块分隔符
  • 添加参数
  • 打破分歧
  • 拆分参数
  • 有条件的案例
  • 结合条件(嵌套)
  • 结合条件(并行)
  • 压缩分配
  • 压缩到三元表达
  • 连接字符串
  • 有条件的案例
  • 创建多变量声明
  • 创建重载
  • 创建Setter方法
  • 用声明创建
  • 展开作业
  • 展开三元表达
  • 提取方法
  • 扁平条件
  • 对于ForEach
  • ForEach to For
  • 有条件地初始化
  • 内联最近作业
  • 内联结果
  • 内联温度
  • 内联声明
  • 介绍本地
  • 介绍本地(全部替换)
  • 介绍结果变量
  • 阵容参数
  • 阵容参数
  • 移动声明近参考
  • 将初始化移至声明
  • 促进参数
  • 删除块分隔符
  • 删除参数
  • 删除冗余条件
  • 重命名本地
  • 重新排序参数
  • 用查询替换Temp
  • 替换为Local
  • 反向条件
  • 简化表达
  • 拆分条件
  • 拆分条件(和重复的其他块)
  • 从声明中拆分初始化
  • 拆分多变量声明
  • 拆分字符串
  • 拆分临时变量
  • 与声明分开
  • 扩大范围
  • 扩大范围(推广到现场)

八个消费优先申报和快速修复功能:

  • 添加合同
  • 添加其他声明
  • 声明字段
  • 声明本地
  • 镜像代码
  • 反向循环
  • 旋转90度
  • 拼写检查程序

此外,我们正在努力改进对10.2版本的重构支持.我们最近还改进了Quick Nav,使得导航到JavaScript函数就像在C#或VB中导航一样简单.这一改进将在10.2中发布,但现在可供日常构建的CodeRush客户使用.

完全披露 - 我在DevExpress领导CodeRush团队.

  • +1负责领导负责相关软件的团队:) (4认同)

Poi*_*nty 2

像 Javascript Intellisense 这样的东西的问题在于,它确实需要具有超自然的力量才能了解一段代码的含义。就像这里,在这个函数片段中:

return function(a) {
  var x = a.
Run Code Online (Sandbox Code Playgroud)

现在我刚刚输入了“。” 在“a”之后,我点击“tab”以自动完成。IDE 能做什么?

在某些有限的情况下,你可以做出一些不错的猜测;例如,如果您告诉编辑器您正在使用 jQuery,编辑器可以做出一些假设,并且它会看到

$('something').
Run Code Online (Sandbox Code Playgroud)

嗯,这是一个不错的猜测,使用 jQuery API 完成是正确的事情。然而,这永远不会比猜测好多少。即使有了那个 jQuery 示例,编辑器仍然会遇到一些难题:

$('something').each(function(_, element) {
  if (element.
Run Code Online (Sandbox Code Playgroud)

在“.”之后,自动完成功能应该向我显示什么?好吧,一个超级聪明的编辑器可能愿意冒险假设“元素”是一个 DOM 节点,但它必须是超自然的才能知道是什么样DOM 节点。

现在,人们可以做的另一件事是启用某种全面的提示系统,以便程序员可以明确地告诉编辑器什么是什么。对我来说,这会让 Javascript 失去一点灵魂,但我想有些人可能会发现它很有用。