繁体   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