2011-07-27 54 views
0

我有我的代码,我想优化它。对我来说,它看起来已经被优化了。任何人都可以建议我怎样才能使它更加优化?有什么方法可以优化此C#代码?

if (target == "power") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; 
} 
if (target == "notes") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } }; 
} 
if (target == "book") 
{ 
    return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } }; 
} 
return null; 
+2

既然它已经看起来够好,你可以继续在大多数情况下。 – BoltClock

+1

当然,你在这里获得的任何表现都相当微不足道?但如果你真的想改变一些东西,我会同意使用开关。 – user122211

+0

你可以把你的目标变成一个枚举吗?然后你可以有'Target.Book','Target.Notes'等。然后你比较枚举值,而不是文字字符串。但是,我没有看到'target'被分配到哪里,所以这可能不是一个选项。 –

回答

2

switch语句针对这些情况都是伟大的:

switch(target) 
{ 
case "power": 
    return new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } }; 
case "notes": 
    return new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } }; 
case "book": 
    return new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } }; 
default: 
    return null; 
} 

并不真正需要的休息寿,因为它会每次都返回,但其良好的做法..

+1

见http://stackoverflow.com/questions/427760/when-to-use-if-else-if-else-over-switch-statments-and-vice-versa – CodeNaked

+3

@尼克你会得到'休息'无法访问的代码'警告;' –

+0

我不认为休息是必要的。 – Eric

0

我会做的唯一的事情就是改变if s到一个if-elseif链。 没有其他的东西可以提高性能。

+0

OP在if块中返回,所以'else if'不会帮助。 – CodeNaked

+0

它还可以更清楚地表明意图。 – Eric

+0

@CodeNaked:我没有说这会有所帮助。更好地传达给阅读代码的人,条件是相互排斥的。 –

2

如果你知道你的方法将被更频繁地调用"book"的值,那么你应该先把它放在第一位。基本上按频率排序。

0

我不知道什么是你的想法左右了优化, 随着速度的问题,只是把一些“其他”前第二个和第三个“如果是 但如果你的意思是更少的代码行,则可能是这样可以帮助你:

return 
((target == "power") ? new JsonResult { Data = new { RC = new Data.AdminPower(datastoreValue).Refresh() } } : 
((target == "notes") ? new JsonResult { Data = new { RC = new Data.AdminNotes(datastoreValue).Refresh() } } : 
((target == "book") ? new JsonResult { Data = new { RC = new Data.AdminBook(datastoreValue).Refresh() } } : null)))) 
+5

我的眼睛会汇总到我的头上,如果我看到行代码中,我有维护,我可能会嘀咕了一些关于程序员的起源非常unnice事情。优化是好的,但还没到可读性就走出了窗外点.... – Tim

+2

当你在它,删除所有的空格和换行:)。没有什么比阅读多行三元陈述在早晨唤醒你。 –

0

正如别人提到的,你应该把它们按最可能出现的顺序排列,以最大限度地减少错误比较的总次数。

也许有可能将“power”“notes”和“book”更改为enum或int表示形式,这可能比字符串比较稍快。

虽然没有太多可以做的事情会导致任何显着的优化。