[英]Should I created class or create if?
我有一種情況:
我需要和班級做些事情。
哪種方法更有效,用IF修改方法或為每個操作創建方法?
public value Value(int command)
{
if (command == 1)
{
DoSomething1();
}
if (command == 2)
{
DoSomething2();
}
else
{
return empty();
}
}
該命令將多出50 o。 在執行性能和可執行文件大小方面,哪個更好?
從高層看,您似乎正在嘗試實現某種動態調度系統? 還是只想執行指定的操作而沒有任何多態性? 很難說。
無論如何,根據您給出的示例,switch塊將是性能最高的,因為JIT編譯器將其轉換為有效的哈希表查找,而不是一系列比較,因此只需執行以下操作:
enum Command { // observe how I use an enum instead "magic" integers
DoSomethingX = 1,
DoSomethingY = 2
}
public Value GetValue(Command command) {
switch(command) {
case Command.DoSomethingX: return DoSomethingX();
case Command.DoSomethingY: return DoSomethingY();
default: return GetEmpty();
}
}
我還注意到, switch
塊還意味着您可以獲得更緊湊的代碼。
這不是性能問題,而是范式問題。
在C#中,方法應該是任務的封裝。 您所擁有的是任務的度量負載,每個任務都不相關。 那不應該是單一的方法。 想象一下將來嘗試維護此方法。 想像一下如何調試它,想知道在調用每個位時您在方法中的位置。
如果將其分開,您的生活會容易得多,盡管性能可能不會有所不同。
盡管幾乎可以肯定,單獨的方法在性能上會更好,但是您幾乎不可能注意到它們之間的差異。 但是,使用單獨的方法肯定會大大提高可讀性,這更重要。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.