![]() |
1
5
要真正安全地进行自动重构非常困难。 当我们第一次在Visual C中引入重构时,我们问自己这样一个问题:我们的重构是否需要始终使事情完全正确,还是应该允许它们在某些情况下出错? 要一直保持正确,需要很多程序员的努力,这意味着我们只需要在盒子里进行一些重构。这也会使重构变慢,因为它们在验证中花费了大量时间。
允许他们犯错误会使他们对没有很好的自动化测试覆盖率的任何团队都毫无用处。TDD团队有很好的测试,但这只是Visual Studio用户基础的一部分。我们不想制作那些必须告诉人们不要使用的功能! TDD团队会很快发现错误,但他们也会很快学会不信任我们的重构工具。他们会犹豫是否使用它们,并且经常寻求其他解决方案(查找和替换而不是重命名)。 此外,作为C小组,我们处于进行高保真重构的有利位置。我们有一个独特的优势,C语言设计师和编译器团队就在大厅里。我们知道我们应该发挥我们的优势。
因此,我们决定减少高质量的重构,而不是进行许多不那么可靠的重构。今天有6个。
回顾过去,我希望我们只做了重命名、提取方法和引入局部变量。最后两个几乎是相同的,从实现的角度来看。3个参数重构(曾经有第7个参数,将局部变量提升为参数,但在VS2010中被截断)是一项繁重的工作,很可能不值得这样做。
我的建议是 做TDD,为您提供大量的测试集合,以便您可以安全地重构,无论您是使用工具还是手工操作。
当我们第一次在Visual C中介绍重构时,我们问自己这样一个问题:我们的重构是否需要始终使事情完全正确,还是应该允许它们在某些情况下出错? 要一直保持正确,需要很多程序员的努力,这意味着我们只需要在盒子里进行一些重构。这也会使重构变慢,因为它们在验证上花费了大量时间。 允许他们犯错误会使他们对没有很好的自动化测试覆盖率的任何团队都毫无用处。TDD团队有很好的测试,但这只是Visual Studio用户基础的一部分。我们不想制作那些必须告诉人们不要使用的功能! TDD团队会很快发现错误,但他们也会很快学会不信任我们的重构工具。他们会犹豫是否使用它们,并且经常寻求其他解决方案(查找和替换而不是重命名)。 此外,作为C小组,我们处于进行高保真重构的有利位置。我们有一个独特的优势,C语言设计师和编译器团队就在大厅里。我们知道我们应该发挥我们的优势。 因此,我们决定减少高质量的重构,而不是进行许多不那么可靠的重构。今天有6个。
回顾过去,我希望我们只做了重命名、提取方法和引入局部变量。最后两个几乎是相同的,从实现的角度来看。3个参数重构(以前是第7个,将局部变量提升为参数,但在VS2010中被削减)是一项艰巨的工作,可能不值得。 我的建议是 做TDD ,为您提供大量的测试集合,以便您可以安全地重构,无论您是使用工具还是手工操作。 |
![]() |
2
10
重构固有的风险。在我看来,仅仅依靠一个工具来保证代码的安全是不明智的。 我们使用Resharper,但不能没有综合单元测试的安全网。我不知道在这个空间有更好的C工具。 |
![]() |
3
5
我不同意你的“测试”显示失败。 你改变了逻辑,而不是工具。您更改了代码,这样将重复调用方法而不是一次。 这些工具只是按照你告诉他们的做。 |
![]() |
4
2
“安全”是相当主观的… 虽然这两种工具在您的头脑中并不被认为是“安全的”,但这两种工具都非常有用。没有工具是完美的。如果他们做了一些你不喜欢的事情,要么避免做,要么创造一个工作环境。 |
![]() |
5
0
我认为安全重构可以成为您的案例的一个工具。 即使是Java,它的概念也可以应用于其他的OO语言。 |
![]() |
A B · C#Excel自动调整列避免长文本时出错 3 月前 |
![]() |
Megrez7 · C#ToArray转换合并为一行,导致数组元素更改 3 月前 |
![]() |
Aycon · 在工厂方法中释放部分创建的对象的正确方法是什么? 3 月前 |
|
Sei · Avalonia/WPF将路由器传递到控制模板 4 月前 |