【发布时间】:2014-08-08 18:07:55
【问题描述】:
我相信每个人都遇到过他们喜欢ToString() 方法的开发人员。我们都可能见过类似以下的代码:
public static bool CompareIfAnyMatchesOrHasEmpty(List<string> list1, List<string> list2)
{
bool result = false;
foreach (string item1 in list1)
{
foreach (string item2 in list2)
{
if (item1.ToString() == item2.ToString())
{
result = true;
}
if (item1.ToString() == "")
{
result = true;
}
}
}
return result;
}
我想知道的是 ToString() 方法(空的,没有格式化的)是否可以被编译器优化掉?我的假设是它没有,因为它最初是在object 上定义的。因此,我提出第二个问题,是否值得努力清理此类实例?
【问题讨论】:
-
那段代码简直让我脊背发凉!
-
be optimization away 几乎没有相关性,它的操作太简单了。这是代码质量问题,而不是性能问题。
-
最好优化掉写这篇文章的开发者。
-
顺便问一下,这是真实代码吗?除了 ToString 之外,我还有其他问题。就像运行时是 O(M*N) 的事实一样,因为没有中断或返回语句......
-
请注意:以上是人为的代码,接近(但不完全)我见过的最糟糕的代码。这个问题的灵感来自this TheDailyWTF,它带回了太多不好的回忆。