2011-07-27 51 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表示形式,這可能比字符串比較稍快。

雖然沒有太多可以做的事情會導致任何顯着的優化。