具有虚拟void的大型switch语句或分散

时间:2016-07-21 04:09:04

标签: c# c#-4.0

我一直在重写我正在编写的应用程序中的一些旧代码行和类,现在我正在尝试决定是否触摸这个或保留它原样。

所以目前我有一个基本上在单个线程上运行的类,并且被称为不断返回不同的结果。该类基本上依赖于switch语句,该语句选择考虑提供给它的信息该做什么。

这是我在决定时遇到的问题。 switch语句有300多个案例,类本身有大约25,000行代码,这显然使得维护和阅读有点困难,因为它有些复杂。

我想到的并且最终做的是一个基类处理程序,它基本上有一个虚拟的空白并从所需的类中获取数据(相当于以前的switch语句),并覆盖它来运行代码。 / p>

所以,是的,我想就此提出意见。什么更好?一个包含超过25,000行代码的switch语句,难以读取/维护但如果我正确则更快或300个不同的类在调用时会覆盖基本处理程序?

1 个答案:

答案 0 :(得分:1)

在99%的情景中,我建议可维护性而非效率。鉴于这是C#,我将假设我们没有基于硬限期的循环时间或一些其他关键任务要求,这些要求通常与较低级别的语言或实时嵌入式系统相关。

我会说25,000行文件是不可维护的,需要分解。这是否意味着将其分解为一组虚拟类或使用一些更传统的分解,例如尝试使用继承抽象部分,我无法在没有更多洞察力的情况下向您推荐。

(但我通常依赖于使用抽象类的继承。我很少在扩展生成的代码之外找到一个很好的虚拟化用例)

要回答最初的问题,使用虚拟void进行散布比单个大型switch语句更好。

祝你好运!