【发布时间】:2013-02-22 16:51:44
【问题描述】:
我一直被“取消缩小”缩小的 JavaScript 代码文件这一令人不快的任务所困扰。使用 JSBeautifier,生成的文件大约有 6000 行。
通常,变量和参数名称会永久丢失,但在这种情况下,我有一个过时的原始文件版本,从该文件生成缩小的 JavaScript 代码文件。这个过时版本的原始文件包含大部分代码 cmets 和变量名,但绝对不能用来代替当前版本。
我想知道是否有某种方法可以重命名 JavaScript 中特定参数或变量的所有实例。由于缩小将名称缩减为单个字符,因此不可能进行查找和替换。
那里有一些工具,我可以告诉我,在这个文件中,函数foo 的参数a 应该是clientName,并让它在语义上将该参数的所有实例重命名为clientName?
不幸的是,我为一家拥有已批准软件列表的大型组织工作,在可预见的未来我只能使用 Visual Studio 2010(没有 VS 2012)。
更新: @Kos,我们不使用 Git,但我们使用源代码控制。问题是不再为我的组织工作的开发人员一旦对文件进行了更改,将其缩小,并且仅将缩小版本签入到源代码控制中,因此他对原始文件的更改已经丢失。
【问题讨论】:
-
我希望 Git 在您的组织名单上,因为它现在可以拯救您 :-)。嗯...您可以尝试在两个版本上使用
JSBeautifier(以统一格式),然后制作补丁并有选择地应用它。如果其他变化不大,这将使您的工作实现半自动化。 -
您可以查看 TypeScript。 typescriptlang.org 默认情况下,所有 javascript 都是 TypeScript,所以我假设在变量重命名方面会有某种帮助——尽管它可能不会跨文件这样做。好消息是 Visual Studio 是 TypeScript AFAIK 唯一可用的 IDE。
-
我不会这么快就取消查找和替换解决方案。 JS 变量只有在以特定方式使用时才在表达式中有效。我认为您可能可以为每种情况进行一些查找/替换并使其正常工作
-
从头开始重写可能会更快更好。也许使用 jQuery。
-
@anoopelias: 默认情况下所有 javascript 都是 TypeScript?甚至远非如此。我认为该技术不适用于这种情况。
标签: javascript visual-studio refactoring automated-refactoring