最近、私が使用するいくつかの大きなC#コードベースの周りに浮かぶいくつかのヘルパースタイルの「ユーティリティバッグ」静的クラスを確認していました。
// Helpers.cs
public static class Helpers
{
public static void DoSomething() {}
public static void DoSomethingElse() {}
}
私がレビューした特定の方法は
- 主に互いに無関係です
- 呼び出し間で持続する明示的な状態なしで、
- 小さい、そして
- それぞれが、関連のないさまざまなタイプによって消費されます。
編集:上記は申し立てられた問題のリストを意図したものではありません。これは、私が検討している特定のメソッドの一般的な特性のリストです。回答がより関連性の高いソリューションを提供するのに役立つコンテキストです。
この質問のためだけに、この種のメソッドをGLUM(一般的な軽量ユーティリティメソッド)と呼びます。「glum」の否定的な意味合いは部分的に意図されています。これが馬鹿げた言い回しとして出くわしたらすみません。
GLUMについての私自身のデフォルトの懐疑論はさておき、私はこれについて以下のことを好きではありません。
- 静的クラスは名前空間としてのみ使用されています。
- 静的クラス識別子は基本的に無意味です。
- 新しいGLUMが追加されると、(a)この「バッグ」クラスは理由もなく触れられるか、または(b)新しい「バッグ」クラスが作成されます(通常、それ自体は問題ではありません。悪いのは、新しい静的クラスは多くの場合、無関係な問題を繰り返すだけですが、メソッド数は少なくなります)。
- メタ命名は、それはだかどうか、必然的に、ひどい非標準、通常は内部的に矛盾している
Helpers
、Utilities
または何でも。
これをリファクタリングするための合理的に良い&単純なパターンは何ですか?
私はおそらく強調する必要があります:私が扱っているすべての方法は、互いにペアで関係がありません。それらをよりきめ細かく、それでもマルチメンバーの静的クラスのメソッドバッグに分解するための合理的な方法はないようです。