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