静态类是否有任何错误,它具有完全不相关的静态方法?

时间:2011-07-01 09:08:05

标签: c# asp.net code-behind

我目前正在处理很多C#代码隐藏,这些代码隐藏最初并非由我编写。它们被写成大块可怕的代码,现在我的工作就是整理它。

无论如何,在很多不同的aspx.cs文件中有很多重复的代码。例如,大约有五个代码隐藏文件,它们具有完全相同的代码片段,可以将一些文本输出到文件中。我可以有这个方法:

private void outputToFile(string text)

在文件后面的五个不同代码中重复。

但是,我想知道一个名为“MethodHub”的静态类是否是一个不好的做法或者说是错误的,它包含outputToFile(字符串文本)以及十几个与每个方法无关的其他方法。其他

总体目标是从静态类访问这些方法,这样我就可以在其他方法中有效地删除数百行代码。

有人可以看到这个有什么问题,或者我可能遇到的任何问题吗?

3 个答案:

答案 0 :(得分:4)

我建议通过引入接口

来抽象这样的实用程序行为
interface IOutputService
{
  void Output(string data);
}

并使用您的实现类实现类

class FileOutputService : IOutputService
{
    // ...
}

代表此界面,主要是避免静态类,因为

编辑:

  1. 通过单元测试
  2. 来覆盖使用静态clas调用的逻辑会很麻烦
  3. 使用静态类,很容易切换逻辑/行为,你必须自己更改逻辑实现,例如,你要从文件输出切换到数据库输出,这将很容易注入另一个实现通用接口的服务,而不是使用潜在的重构

答案 1 :(得分:2)

当然,一个静态类持有几个不相关的方法并不是特别优雅,但它比“大量重复的可怕代码重复到处”模式更好。

进行重构时,请始终按小步骤进行。删除重复后,将更容易进一步改进。

答案 2 :(得分:0)

当然,您可以使用静态类,但如果该方法使用任何共享字段,则应避免线程安全问题。