C# 重构整个项目';s变量和参数名

C# 重构整个项目';s变量和参数名,c#,refactoring,C#,Refactoring,我继承了一个大型C项目,其中所有变量和参数名都是这样写的 是否有一些简单的方法或工具,我可以使用不超过10次鼠标点击自动重命名它们。因此,上述示例将变成类似于此的写式(即驼峰案例)。和实例变量writenlikethis 它还需要更新XMLDoc注释 我可能会用正则表达式做点什么,但前提是我不重写轮子 谢谢。不,Visual Studio中的重构工具不支持这种复杂性 您需要手动执行此操作。您可以编写一些实用程序来重写项目文件,但它将在语义上分离操作,并且可能会选择变量名以外的其他名称,这是您宁愿

我继承了一个大型C项目,其中所有变量和参数名都是这样写的

是否有一些简单的方法或工具,我可以使用不超过10次鼠标点击自动重命名它们。因此,上述示例将变成类似于此的写式(即驼峰案例)。和实例变量writenlikethis

它还需要更新XMLDoc注释

我可能会用正则表达式做点什么,但前提是我不重写轮子


谢谢。

不,Visual Studio中的重构工具不支持这种复杂性

您需要手动执行此操作。您可以编写一些实用程序来重写项目文件,但它将在语义上分离操作,并且可能会选择变量名以外的其他名称,这是您宁愿避免的

例如,您如何区分:

string my_badly_named_string = "Hi, there!";

VS重构工具知道这一区别,因为它在源文本之上查看语义。你的工具不会


但老实说,这将是一个泰坦的工作。还有一个危险,你会引入更多的错误。最好保持原样。

我同意NewInTown的观点,你应该保持原样,但是,如果你想更改名称,并且你有很好的单元测试,那么当你需要在函数中进行一些更改以修复bug时,就慢慢地开始将名称更改为新方案

这将阻止您尝试将其自动化并创建许多新的bug,并且您不会浪费时间来更改无法改进应用程序的工作代码


由于某种原因,我倾向于利用修复函数的时间进行重构或基本优化。

如果您刚刚继承了该项目,那么在需要开始使用该项目并对其进行更新之前,将其保留下来可能是值得的。如果重构过程纯粹是重命名,那么花在其他地方的时间可能会更好。在处理不同部件时重命名这些部件也会直观地显示您的位置


如果您真的想重命名变量和参数名,您可能想尝试构建一个只解析代码文件以进行文本替换的过程(使用正则表达式或基本字符串操作,具体取决于您所知道的内容,请记住这将是一次仅限的更改)这可能比评估代码重构工具更快。

我最近使用resharper完成了这项工作。它比VisualStudio中的烘焙实用程序快得多。我必须找到每个标识符并进行重构/重命名,但这是安全的,因为它可以正确地重命名所有内容。重要的一点是,代码必须在开始之前完全编译。偶尔重新编译一次会有帮助,只是要确保事情仍然处于良好状态。它不看源代码,而是使用IL或codedom或其他东西。对于一个非常大的项目来说,这仍然很耗时,但它是有效的


顺便说一句,我花了一整天的时间在一个以下划线开头的继承项目中更改所有的本地变量,这样它们就不会发生变化。我个人无法忍受代码被过多的前导下划线所污染。但那只是我——每家商店都不一样。

为什么?重点是什么?你的代码会更快还是没有bug?我怀疑它会更具可读性,因为你现在拥有的和你想要的对我来说都很好。不是说你不应该这么做。只是不明白动机。你的时间不应该花在修复bug或添加功能上吗?例如,让代码库更易于使用,并符合公司的命名约定,对我来说是一个值得称赞的目标。如果ReSharper有一个“强制执行约定”的批处理任务,那就太好了,但我不这么认为了…@Pax:我猜,对于最近获得的应用程序,遵守编码风格指南是不错的。愉快吗?我们对令人愉快的事情的看法一定有所不同:-)但是,我理解公司命名准则(不幸的是,我理解得太好了)。@Pax:你不觉得使用名称不一致的代码库对平台来说不习惯吗?我当然喜欢。它分散了代码的注意力,这是一个非常现实的问题。我不知道,对我来说,用几个正则表达式处理它听起来很简单。您给出的示例实际上可以只使用内置的.NET字符串类在一行中完成。正则表达式总是很简单,直到您开始将其用于更适合解析的任务时为止:-)
string aGoodString = @"We need to rename the my_badly_named_string because
                       it looks ugly";