簡體   English   中英

我應該創建類還是創建?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM