我的方法长度超过700多行。在该方法的开头,声明了大约50个局部变量。我决定将局部变量取出并将它们作为属性放入一个单独的类中,这样我就可以在方法中声明该类并在其中使用属性。这是完全正常还是其他数据类型适合这里,如结构?此方法是在经典ASP时代编写的。
答案 0 :(得分:8)
Hrm ......我认为你可能会更好地重构方法,而不必对这么多变量进行操作。例如,对10个变量进行操作的五种方法各自会无限好。就目前而言,感觉就像你只是试图掩盖一个问题而不是解决它。
答案 1 :(得分:8)
我的方法长度超过700多行。在方法的开头,声明了大约50个局部变量。
好的,那么,该方法的长度也是一个问题。 700线是太多了,不能同时保持一个正常人的头部直线。当你必须在那里修复一个bug时,你最终会上下滚动和上下......你明白了。这真的让事情难以维持。
所以我的回答是,是的,你应该把你的数据分成某种结构,假设它实际上是有意义的(即,我可能不会创建一个SomeMethodParmaters
类)。接下来要做的是将该方法拆分成更小的部分。您甚至可能发现不再需要数据结构,因为现在每个方法只需要为其需要的工作声明一些变量。
此外,这是主观的,但实际上没有充分的理由在方法的顶部声明所有变量。尝试将它们声明为尽可能接近实际使用时间。同样,这只是为了将来的维护保持良好和清洁。当你可以在屏幕上看到它时,更容易专注于一段代码。
答案 2 :(得分:1)
我强烈建议您阅读本书和/或任何与重构相关的网站。 http://www.amazon.com/Refactoring-Improving-Design-Existing-Code/dp/0201485672
虽然您无法在单个方法中查看700多行并自动说这是不好的,但它确实表明代码异味。方法应该是具有单一目的的小代码单元。这使您更容易维护或者来自您的人。它还可以帮助您找到设计的改进,并在未来更容易地改变您的设计。
创建一个只是为了保存属性而不查看整体结构应该是什么只是隐藏一个问题。这并不是说在这个特定的情况下,这不是一个完全可以接受和正确的解决方案,只是你应该确保你花时间提供一个经过深思熟虑的设计,你的类具有他们应得的属性,状态和功能。
希望这有帮助。