是否在整个代码库中更改变量名称只是要求发生灾难?

时间:2009-02-20 09:25:23

标签: regex architecture codebase

假设您决定将Stack Overflow的名称更改为Frack Overflow。

现在,在您的代码中,您已经拥有了许多对象,变量和选择器,其中包含一些名称为“Stack”的变体。您希望它们现在可以替换为“Frack”。

所以我的问题是,你会选择通过正则表达式过滤器运行整个代码库并更改所有这些名称吗?或者你会让他们成为?

9 个答案:

答案 0 :(得分:9)

我会使用好的IDE的“重命名”功能为我做这件事。

答案 1 :(得分:2)

这取决于,真的。

在像C ++这样的语言中,你可以侥幸成功,因为如果出现问题,编译器会立即通知你。但是,其他不那么挑剔的语言将允许你引用不存在的变量,而最坏的情况是手腕上的一记耳光,以异常的形式被抛出以供空引用。

我曾经在一个flex项目上工作过一次代码库真的很乱,我们决定通过代码并美化它以符合Adobe AS3编码标准。由于我是该项目的新手,我没有意识到某些类中的变量名实际上是指持久化对象hibernate(运行后端服务器的java webapp)用于创建映射。所以重命名这些变量会导致整个flex前端行为不端,即使我们在IDE中使用“正确的”重构工具也是如此。

但实际上,我会说要在门口检查你的强迫症并一次做一些改变。每当你在一个大型项目中更改几十个文件时,你就有可能破坏它的稳定性,在这种情况下,从这种风险中获得的好处不会得到回报。

答案 2 :(得分:1)

我首先问自己这个问题为什么?这是一天结束时的风险/回报判断,只有你可以做出。

由于风格原因,我会非常不愿意这样做,但是对于课程重新分解它可能是合法的。

答案 3 :(得分:1)

嗯,不一定是灾难,但它肯定会在大型代码库上造成一些麻烦。这就是我讨厌匈牙利表示法的原因:如果你碰巧改变了它的类型,它会让你改变你所有的变量名。

答案 4 :(得分:1)

如果解决方案中的对象,成员和字段具有引用某个客户实现的名称,我会努力重新考虑这些以使用更多通用名称,我会让Resharper执行重新命名,而不是一些通用的文本搜索和替换工具。

答案 5 :(得分:1)

只需使用像JetBrains的Resharper或CodeRush和Refactor这样的重构工具!通过DevExpress。它们会自动更改整个代码库中变量的所有引用,并且可以执行更多操作。 我相信重构!甚至包含在Visual Studio的VB版本中。我使用Resharper,没有它就拒绝开发。

答案 6 :(得分:1)

如果我使用源代码版本控制系统(如svn,git,bazar,mercurial等),我不会害怕重构我的代码。

使用某种“find replace all”或重构某些IDE,编译(如果它不是动态语言)并运行测试(如果有的话)。

如果出现严重错误,您可以随时使用源代码管理系统恢复代码。

答案 7 :(得分:1)

重命名可能是最常见的refactoring。我们鼓励您随意重构代码,因为这使您可以灵活地在编写应用程序时不必对名称,代码放置等做出永久性决策。如果你不熟悉这个想法,我会建议你从Wikipedia page开始,然后潜入Martin Fowler's site

但是,如果您需要编写自己的正则表达式来重命名,那么您可以使用更好的工具。不要浪费你的时间重新发明轮子 - 然后修理你的新车轮意外损坏。如果您有选项,请使用现有工具(IDE或其他)来执行脏工作。

即使你有几十件要重命名的东西,我认为你最好手动逐一找到它们,然后使用自动重命名来修复整个代码中的所有实例。

答案 8 :(得分:0)

我认为你需要有充分的理由这样做。当我在大型代码库中进行具有大量潜在副作用的更改(这种情况时有发生)时,我通常会寻找一种方法来使编译器在我错过的位置失败。而且,如果可能的话,我倾向于分阶段进行,以尽量减少休息。

我不会仅仅为了重命名而重命名。