让我们说你继承了一个C#代码使用的一个类有200静态的方法,以提供核心功能(例如数据库查找).许多噩梦中的那一类,有大量地使用匈牙利表示法(不良)。

你会重构的变量名称中删除匈牙利表示法,或者你会离开他们的孤独?

如果选择改变所有的变量来去除匈牙利表示法,这将是你的方法?

有帮助吗?

解决方案

就不要管它。有你的时间更好的用途。

其他提示

重构 - 我找到匈牙利命名法对规模确实与代码的可读性自然干扰,且运动是在熟悉了那里的东西的一个好办法

不过,如果有其他团队成员谁知道代码库,你需要在重构共识,如果有任何变量都在一个项目的暴露在外,那么你将不得不独自离开他们。

右击变量名,重构 - >重命名

有VS加载项也这么做,但内置的方法对我来说工作得很好。

我会怎么做?假设我只需要保持代码,而不是把它改写任何显著的方式? 保留得很好孤单。,当我的的添加代码,与现有的风格,意义去使用那个丑陋的匈牙利命名法(如脏,这让我感觉。)

但是,嘿,如果你真的有一个的 hankerin' FER refactorin' 的然后就做一个小的时间。每当你在它的工作时间花上十来分钟重命名变量。整理东西了一点。几个月后,你会发现它是干净的哨子......

不要忘记,有两种类型的匈牙利表示法。

原来的查尔斯*西蒙尼HN,后来被称为程序的匈牙利和以后的可憎的所谓的系统匈牙利之后,一些peckerhead(这是一个技术术语)完全误解了 西蒙尼的原来的纸.

不幸的是,系统HN是传播Petzold和其他人成为更主要的堕胎,这是理所当然地认为今天。

读乔尔的 优秀的文章 关于意图的原始应用匈牙利表示法和应对不起,为什么失去了在匆忙。

如果你有什么是程序的匈牙利你可能会想保持它的阅读原始查尔斯*西蒙尼一条和乔尔的文章。

如果你已经降落在一个热气腾腾的堆系统匈牙利?

所有的赌注都关掉!

呼!(述,同时保持鼻子)(-:

如果你觉得幸运,只是想匈牙利走开,隔离所使用的匈牙利前缀,并尝试搜索和文件替换的没有的,然后做一个干净的来替换它们和重建。如果错误的数量很小,只是解决它。如果错误的数量是巨大的,回去首先把它分解成逻辑(按域)班,然后分别重新命名(IDE将帮助)

我用它宗教早在VB6天,但停车时VB.NET出来,因为这是新的VB的指导方针说了什么。其他开发商也没有。所以,我们有很多的旧代码与它。当我这样做对维护代码我删除的功能/方法/子我接触的符号。我不会删除,一次就全部的除非的你已经有了真正良好的单元测试的一切,可以运行他们就可以证明没有什么是坏了。

多少钱,你打算做这个突破?这是要问自己一个重要问题。如果有大量的代码其他部分使用该库的,那么你可能只是通过重命名锻炼会创建人(也许你)的工作。

我把它的东西重构时候做就行了。至少这样每个人都希望你可以打破库(临时)。

这是说,我完全感到沮丧与不良命名方法和变量,所以我可以涉及。

我不会做一个项目出来。我会用重构工具在VS(实际上,我会使用ReSharper的,但是VS的工作就好了),并修复我呼吁修改任何方法的所有变量。或者,如果我不得不做出更大规模的变化,我想重构的变量名中,我在来调用的任何方法的了解的。

如果你有一个合法的需要删除和更改它,我请使用内置的重构工具,或者类似的东西ReSharper的。

不过,我将与克里斯康威同意在一定的角度,并问你为什么,是的,很是烦人,但在同一时间,很多的时候,“如果aint't打破了它done't修复“方法确实是去的最佳途径!

只有改变它,当你直接使用它。并确保你有一个测试平台准备申请,以确保它仍然有效。

我同意,淘汰匈牙利命名法的最佳途径是重构代码,对其进行修改。做这种重构的最大好处是,你应该写代码周围的单元测试你修改,让你有一个安全网,而不是穿越你的手指,希望不要破坏现有的功能。一旦你有了这些适当的单元测试,你可以自由地修改代码,你的心脏的内容。

我会说一个更大的问题是,你有一个单一的类200(!)方法!

如果这是通/多改变的类很大程度上取决于那么它可能是值得重构,使之更可用。

在此,ReSharper的是绝对必要的(你可以使用内置的重构的东西,但ReSharper的是更好的方式)。

开始查找一组相关的方法,然后重构这些伸到一个不错的小内聚类。更新以符合您最新的代码标准。

编译&运行测试套件。

有能量更多?提取另一个类。结果 累死了 - 也不麻烦。回来多做一些明天。在短短几天你就会有征服野兽。

我同意@Booji - 做手工,每个程序的基础上,当你已经访问的代码,其他一些很好的理由。然后,你会得到最常见的出路,谁在乎的其余部分。

我想提出一个类似的问题,只能在我的情况下,有问题的代码是我自己。我使用的匈牙利的“坏种”从我的FoxPro天(其中有弱类型和不同寻常的作用域)的一个非常古老的习惯 - 习惯我是最近才踢了。

这很难 - 它意味着接受在代码基础不一致的风格。这只是一个星期前,我终于说:“拧”,并开始参数名称没有字母“P”。认知失调最初我感觉已经让自由的感觉。世界上没有走到尽头。

我已经准备对这个问题的方式是一次改变一个变量,我碰到他们,那么当你回来做更深入的变化进行更彻底的改革。如果你喜欢我什么,你的变量的不同命名将推动你的蝙蝠shiat疯狂了一段时间,但你会慢慢变成习惯了。最关键的是在同一时间,直到你拥有了一切到它需要在它蚕食一点点。

另外,你可以完全抛弃你的变量,只是有每个函数返回42。

它听起来好像更大的问题是,200-方法神对象类。我建议重构只是删除了匈牙利表示法是低价值,高风险活动的本身。除非有丰富的一套围绕着一流的自动化单元测试,让大家有信心在你的重构,我觉得你应该把它和真正孤单。

我想这是不可能的,这样的一组测试存在,是因为以下TDD实践的开发人员(希望)很自然地避免建设摆在首位神的对象 - 这将是很难写的综合测试。

消除神对象和在适当位置得到一个单元测试碱是较高的值,但是。我的建议是找机会要重构类本身 - 也许当一个合适的业务需求/改变是沿着必要更改代码(因此希望带有一些系统和回归测试,购买和支付)。你可能不能够证明一气呵成重构整个事情的努力,但你可以通过一块作为机会来一起做这一块,和试驾的变化。通过这种方式,你可以在面条代码慢慢转变为全面的单元测试,点点滴滴更清洁的代码库。

和可以消除匈牙利,当您去,如果你喜欢。

我其实在做同样的事情,这里的应用程序扩展。我的方法是使用VIM映射来搜索特定的匈牙利命名法的前缀,然后将其删除和修复资本为适当。

实施例(在的vimrc云):

"" Hungarian notation conversion helpers
"" get rid of str prefixes and fix caps e.g. strName -> name
map ,bs /\Wstr[A-Z]^Ml3x~
map ,bi /\Wint[A-Z]^Ml3x~
"" little more complex to clean up m_p type class variables
map ,bm /\Wm_p\?[A-Z]^M:.s/\(\W\)m_p\?/\1_/^M/\W_[A-Z]^Mll~
map ,bp /\Wp[A-Z]^Mlx~

如果您只是为了重构的目的是要打破代码,我会认真考虑只留下我,特别是,如果你要影响其他人在你的团队谁可以根据这些代码。

或者如果你的团队是确定这种重构和投资你的时间在做这个(可能是节省时间在未来,如果这意味着代码更易读/维护),使用Visual Studio(任何IDE您使用的),以帮助你重构代码。

但是,如果像这样的一个大的变化是不是一个危险的球队/老板愿意承担,我会建议一个有点不正规,中途途径。而不是做你所有的重构在单次扫描的,为什么不重构的代码段需要正常的维护过程中被感动(更具体地说,功能)?随着时间的推移,这种缓慢的重构将带来代码,使其更清洁的状态,此时你可以用最终横扫完成重构过程。

我爱匈牙利表示法。不明白你为什么会想摆脱它。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top