假设你继承了一个使用一个类和200个静态方法来提供核心功能(如数据库查找)的C#代码库。在那个类中,有许多噩梦,包括大量使用匈牙利标记(糟糕的那种)。
你会重构变量名以删除匈牙利标记,还是保持原样?
如果你选择改变所有变量以删除匈牙利标记,你的方法是什么?
假设你继承了一个使用一个类和200个静态方法来提供核心功能(如数据库查找)的C#代码库。在那个类中,有许多噩梦,包括大量使用匈牙利标记(糟糕的那种)。
你会重构变量名以删除匈牙利标记,还是保持原样?
如果你选择改变所有变量以删除匈牙利标记,你的方法是什么?
重构 -- 我认为在这个规模上使用匈牙利命名法会严重干扰代码的自然可读性,而且通过这个练习可以熟悉代码的内容。
但是,如果有其他团队成员熟悉此代码库,则需要就重构达成共识。如果任何变量在一个项目之外被暴露出去,则必须不予修改。
就让它保持不变。你的时间有更好的用途。
右键点击变量名,选择重构 -> 重命名。
也有一些Visual Studio插件可以完成此操作,但我觉得内置的方法已经足够好用了。
我该怎么做?假设我只需要维护代码而不重写它,那就不要轻易动它。当我确实需要添加代码时,遵循现有的风格,也就是使用那个丑陋的匈牙利命名法(尽管这让我感觉很糟糕)。
但是,如果你真的想要进行重构,那就一次只改一点点。每次工作时花十分钟重命名变量,稍微整理一下。几个月后,你可能会发现它变得干净如新。
最初的Charles Simonyi HN,后来被称为App's Hungarian,以及后来的可怕的System Hungarian,是由一些混蛋(这是一个技术术语)完全误读了Simonyi的原始论文而产生的。
不幸的是,Petzold和其他人传播了System HN,使其成为今天应该被认为是更为主流的悲惨遭遇。
阅读Joel的出色文章,了解原始Apps Hungarian Notation的意图,并对在匆忙中失去的东西感到抱歉。
如果你拥有的是App's Hungarian,那么在阅读了Charles Simonyi的原始文章和Joel的文章之后,你可能会想要保留它。
如果你陷入了一堆System Hungarian?
所有的赌注都取消了!
哇!(捂着鼻子说)(-:)
我曾在VB6时代虔诚地使用它,但当VB.NET发布后,由于新的VB准则规定,我停止了使用。但其他开发者并没有停止使用,所以我们有很多旧代码中包含它。当我对代码进行维护时,会从我修改的函数/方法/子程序中删除此注释。除非你拥有真正好的单元测试来证明没有任何问题,并且可以运行这些测试来证明没有任何问题,否则不要一次性删除所有注释。
我不会把它变成一个项目。我会使用VS的重构工具(实际上,我会使用Resharper的,但VS的也很好用),并在我需要修改的任何方法中修复所有变量。或者如果我必须进行较大规模的更改,我会在任何我需要“理解”的方法中重构变量名。
如果您有合法的需要删除和更改它,我建议使用内置的重构工具或类似Resharper的工具。
然而,我同意Chris Conway的观点,并向您提出一个问题:为什么要这样做呢?是的,这很烦人,但同时,“不破不立”的方法在很多时候确实是最好的选择!