一个静态类有完全不循环的静态方法,它有什么问题吗

本文关键字:静态方法 问题 什么 循环 一个 静态类 | 更新日期: 2023-09-27 18:00:46

我目前正在处理许多最初不是我写的C#代码。它们被写成了一大堆看起来很糟糕的代码,现在我的工作是整理它们。

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

private void outputToFile(string text)

在五个不同的代码隐藏文件中重复。

然而,我想知道,声明一个名为"MethodHub"的静态类,它包含outputToFile(字符串文本)以及十几个其他互不相关的方法,这是错误的做法还是错误的?

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

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

一个静态类有完全不循环的静态方法,它有什么问题吗

我建议通过引入接口来抽象这种实用程序行为

interface IOutputService
{
  void Output(string data);
}

并使用您的实现类实现

class FileOutputService : IOutputService
{
    // ...
}

对于这个接口,的要点是避免静态类,因为

编辑:

  1. 通过单元测试来覆盖使用静态类调用的逻辑将是一团糟
  2. 对于静态类,很容易切换逻辑/行为要复杂得多,你必须改变逻辑实现本身,例如,你必须从文件输出切换到数据库输出,注入另一个实现公共接口的服务要容易得多,而不是进行潜在的重构

当然,一个包含几个不相关方法的静态类不是特别优雅,但它比"到处重复的大量看起来可怕的代码"模式要好。

当你进行重构时,一定要循序渐进。一旦你去掉了重复,就更容易进一步改进。

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