我继承了一个用C#编写的在线测验应用程序,这些代码行遍布整个地方.
那么这段代码有多糟糕?
我可能遇到的潜在问题是什么?
我怎么能改进它?
strTestPasses += ""; Subject " + ((Hashtable)((ArrayList)((Hashtable)MultipleTestPasses[i])["HasMultipleDataSet"])[j])["subject"] + "
Noel Kennedy.. 14
我也讨厌这些"代码行".当人们问我'你做过的最大项目是什么'时,我会说'1行代码'.当其他人向我挑战时,"你每天能写多少行代码?",我回复他们说,'只有一个我的兄弟.但这是一条真正的路线'
我也讨厌这些"代码行".当人们问我'你做过的最大项目是什么'时,我会说'1行代码'.当其他人向我挑战时,"你每天能写多少行代码?",我回复他们说,'只有一个我的兄弟.但这是一条真正的路线'
要开始重构,我可以建议:
TestPassesBuilder.AppendFormat( "", MultipleTestPasses[i]["HasMultipleDataSet"][j]["subject"] ); Subject {0}
要么
TestPassesBuilder.AppendFormat( "", "Subject", MultipleTestPasses[i]["HasMultipleDataSet"][j]["subject"] ); {0} {1}
TestPassesBuilder
当然,StringBuilder 在哪里MultipleTestPasses
被转换为使用适当的泛型集合类型而不是ArrayList/HashTable可憎的.第二个选项还允许在某个时刻将每行的标题分解为变量.
对于下一步,MultipleTestPasses应转换为真实对象.由于看起来他正在使用硬编码键,因此每个"键"实际上对应于类的属性.
它通过了单元测试吗?