如何使用或完成意大利面条代码?

时间:2011-01-14 17:35:18

标签: asp.net performance testing

问:

最近,我要求测试代码,检测错误并修复问题,我发现很多问题,但这里的主要问题是它自己的代码,意大利面条代码许多代码行和修复问题的跟踪是如此困难,加上一些代码被复制并粘贴到互联网上,因为它没有任何修改,没有文档是可能这个代码,性能如此糟糕由于在每件事情中大量使用viewstate,而且我需要花费大量时间来解决问题,而且我总是害怕这个时候还可能出现其他错误..如何处理这个案例,任何有关这个问题的建议都会有很大的帮助。

5 个答案:

答案 0 :(得分:6)

开始重构。这不仅会使代码更具可读性,还会使您对它的工作原理及其作用有更深入的了解。

答案 1 :(得分:3)

这是一种非常常见的情况 - 软件开发已有多年,并且由许多不同的开发人员开发,现在你必须支持它。你应该反对将它扔掉并重写整个应用程序的意愿 - 这是一个很大的努力,很有可能你会做很多错误,已经修复了错误的代码。有关详细说明,请参阅Joel article

根据我的经验,最好的方法是重构代码。然而,它涉及编写大量测试 - 单元,自动接受 - 并且几乎与重写相同,但它会减少痛苦

答案 2 :(得分:3)

我认为使用意大利面条代码的心态在Martin Fowler的Refactoring中得到了很好的总结。

  

我想到的是手术:整个患者除了要操作的部位外都是垂褶的。覆盖物使外科医生只有一组固定的变量。现在,我们可以长时间争论一个人对左下象限腹部的抽象是否会带来良好的医疗保健,但在手术的那一刻,我很高兴外科医生可以集中注意力

基本上这意味着从小开始,并一次更新代码的单个部分。未来几乎没有什么变化可以构成良好的结构化代码。

当然,如果整个架构存在重大问题,您可能需要注意Cyber​​nate的建议并从头开始(尽管可能不愉快)。

答案 3 :(得分:1)

我还会编写单元测试以及重构,正如codymanix所说。这有几件事:

  1. 当你重构时,你会检查一下你的重构不会破坏。
  2. 编写测试是学习嵌入代码中的领域知识的好方法。
  3. 当然,在意大利面条代码中添加单元测试有一个固有的问题:它通常很难进行单元测试,你需要对其进行重构才能使其可测试。但是,如果你一点一点地从最低端的果实开始,通常你可以使它可读。

答案 4 :(得分:-1)

废弃现有代码并重新开始。
这需要相当多的努力比较。

如果这不是一个可能的选择,那就使用像ReSharper这样的工具进行重构,这将有一个良好的开端。