当前位置:  开发笔记 > 编程语言 > 正文

这段代码有多糟糕?

如何解决《这段代码有多糟糕?》经验,为你挑选了3个好方法。

我继承了一个用C#编写的在线测验应用程序,这些代码行遍布整个地方.

那么这段代码有多糟糕?

我可能遇到的潜在问题是什么?

我怎么能改进它?

代码:

strTestPasses += "Subject" + ((Hashtable)((ArrayList)((Hashtable)MultipleTestPasses[i])["HasMultipleDataSet"])[j])["subject"] + "";

Noel Kennedy.. 14

我也讨厌这些"代码行".当人们问我'你做过的最大项目是什么'时,我会说'1行代码'.当其他人向我挑战时,"你每天能写多少行代码?",我回复他们说,'只有一个我的兄弟.但这是一条真正的路线'



1> Noel Kennedy..:

我也讨厌这些"代码行".当人们问我'你做过的最大项目是什么'时,我会说'1行代码'.当其他人向我挑战时,"你每天能写多少行代码?",我回复他们说,'只有一个我的兄弟.但这是一条真正的路线'



2> Joel Coehoor..:

要开始重构,我可以建议:

TestPassesBuilder.AppendFormat(
    "Subject{0}", 
    MultipleTestPasses[i]["HasMultipleDataSet"][j]["subject"]
  );

要么

TestPassesBuilder.AppendFormat(
    "{0}{1}",
    "Subject", 
    MultipleTestPasses[i]["HasMultipleDataSet"][j]["subject"]
  );

TestPassesBuilder当然,StringBuilder 在哪里MultipleTestPasses被转换为使用适当的泛型集合类型而不是ArrayList/HashTable可憎的.第二个选项还允许在某个时刻将每行的标题分解为变量.

对于下一步,MultipleTestPasses应转换为真实对象.由于看起来他正在使用硬编码键,因此每个"键"实际上对应于类的属性.



3> Darren Oster..:

它通过了单元测试吗?


对不起,我现在将从我的脸颊上移开我的舌头......没有单元测试的代码可能会也可能不会被破坏.具有单元测试的代码可以通过单元测试,但单元测试是否"已损坏",即它实际上是否完全测试了所需的行为?啊,代码哲学.他们应该开设课程......
推荐阅读
手机用户2402852307
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有