【发布时间】:2011-08-23 15:01:55
【问题描述】:
我正在浏览我的一个朋友的库,因为他询问了优化,我遇到了这样的一段代码:
long digit = 0;
switch (word) {
case "zero":
digit = 0;
break;
case "a":
case "one":
digit = 1;
break;
case "two":
digit = 2;
break;
case "three":
digit = 3;
break;
case "four":
digit = 4;
break;
case "five":
digit = 5;
break;
case "six":
digit = 6;
break;
case "seven":
digit = 7;
break;
case "eight":
digit = 8;
break;
case "nine":
digit = 9;
break;
case "ten":
digit = 10;
break;
case "eleven":
digit = 11;
break;
case "twelve":
digit = 12;
break;
case "thirteen":
digit = 13;
break;
case "fourteen":
digit = 14;
break;
case "fifteen":
digit = 15;
break;
case "sixteen":
digit = 16;
break;
case "seventeen":
digit = 17;
break;
case "eighteen":
digit = 18;
break;
case "nineteen":
digit = 19;
break;
case "twenty":
digit = 20;
break;
case "thirty":
digit = 30;
break;
case "fourty":
digit = 40;
break;
case "fifty":
digit = 50;
break;
case "sixty":
digit = 60;
break;
case "seventy":
digit = 70;
break;
case "eighty":
digit = 80;
break;
case "ninety":
digit = 90;
break;
}
return digit;
我在这里看到了一些关于 exactly how a switch might work 的问题,但他们很方便地没有提到字符串的情况。像上面这样的 switch 语句可以以任何方式优化吗?
【问题讨论】:
-
优化?它是否存在衡量的性能问题?
-
我愿意赌一美元,在这个程序的某个地方存在一个错误,字符串“twenty-a”被解析为 21。另外,“forty”拼写错误。
-
Mitch Wheat - 不,但在我的书中,你不会将坏代码优化为好代码,而是将好代码优化为更好的代码。
-
@Corey:在我的书中,你不会浪费股东的钱花时间和金钱“优化”(1)已经足够好,(2)可能不是最慢的代码该程序。在花时间快速获取代码之前,先花时间获取代码正确。我只看一眼就发现了两个错误;花时间解决错误。
-
@Corey Ogburn:总会有股东,只是可能不是你传统上认为的股东。也许“利益相关者”是一个更合适的术语,但重点仍然是某个地方的某个人(可能只有你)对这个项目有兴趣或关注。
标签: c# optimization