一般的な共有メソッドを配置する場所


9

私はどこでもよく使われる方法をたくさん持っています。現在、コードファイルはグローバルと呼ばれ、それらが...実際...グローバルであるという事実を表しています。

しかし、私はこれが好きではありません。

これらをクラスにグループ化し、インターフェースを渡したいです。私はインスタンスを1つだけ作成しますが、ここではシングルトントラップに陥りません。

まず、クラスの名前は何にしましょうか。メンテナが間違った考えを理解するのではないかと心配しているので、グローバル名は避けたいです。

また、このような一連のメソッドを分割して、動作を変更および適応できるようにするにはどうすればよいですか?

メソッドのセットには、次のようなものが含まれます。

  • 変換表
  • クリップボードの相互作用
  • ビルドされたフォントの管理
  • 一般的な描画方法
  • 頻繁に使用するリソースにアクセスできるインターフェースを提供する

これらは、状態を保存しない、または状態を保存する純粋なUtilメソッドのようなものですか?
TheLQ 2011

シングルトントラップに入らない場合は+1。
カレブ

@TheLQそれらは必ずしも状態を保存するわけではありませんが、便宜上(変換チャートのような)constデータを保持します。
Lee Louviere、2011

回答:


4

名前空間は [application].Common.Shared

クラスに名前を付けることができます:

ConversionLookup
ClipboardCommunication
FontManager
DrawingUtility

クラスは別のことをしているように聞こえるので、クラスを分割します。


1

1つのインスタンスを作成する場合、ほぼシングルトンになります。また、シングルトントラップについて話す場合、人々が通常言及することは、シングルトンはグローバルであり、ほとんどのクラスはグローバルではないほうがよいということです。したがって、シングルトンを使用することもできます。呼び出したいオブジェクトにインターフェースを適切に渡すことができる場合、それは実際にはグローバルではありません。

また、すべてを1つのグローバルメソッドにまとめると、1つのメソッドに変更を加えるたびに新しいサブクラスが必要になるだけでなく、変更の組み合わせごとに独自のサブクラスが必要になるため、動作を変更して適応させることが難しくなります。

本当にグローバルなものごとにシングルトンを使用することをお勧めします(すべてを説明します)、インスタンスを提供するある種のレジストリまたはファクトリー(つまり、インターフェイスが約束しないでください)。発信者の視点から見た行動に基づいて名前を付けます。


1

私は通常、これらのタイプのことを、「foo.Common.Collections」や「foo.common.UI」などの名前空間の下にある「foo.Common」などの独自のアセンブリ名に配置します。その後、どのプロジェクトでもアセンブリを参照できます私はそれらが必要です。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.