2016-11-16 20 views
0

データメンバを保持していないユーティリティクラスがあり、そのメソッドを通じていくつかのサービスを提供しています。そのような場合、どんなアプローチが良いですか?すべての静的メソッドを持つクラスを作成するか、通常のメソッドを持つクラスを作成し、そのクラスのオブジェクトを作成して呼び出します。いずれのアプローチの賛否両論は何ですか?静的メソッドを持つクラスまたは通常のメソッドを持つクラス

+5

第3の可能なオプション: 'namespace'とfree関数を使用します。 –

+0

コメントのおかげで、3つのアプローチのいずれかを選択する理由は何ですか? – Arun

答えて

1

優れた選択肢はnamespaceとフリー機能を使用していると思います。理由:それはインスタンス化する必要がありますが、何の状態を持っていないよう

  • 通常の方法でclassを使用すると、混乱しています。

  • classを静的メソッドのみで使用する方が良いですが、ユーザーは常にクラスの名前を指定する必要があります。 namespaceとフリー機能を使用

  • は混乱/不要インスタンス化の可能性を防止し、また、ユーザがnamespaceをエイリアスまたは同じスコープ内に複数の機能を使用する場合、繰り返しを避けるためにusing namespaceを使用することを可能にします。 namespaceは複数のファイルにまたがることができます。

1

データメンバーがない場合、メンバーメソッドでクラスを使用する理由はありません。メソッドを呼び出すためにクラスのインスタンスを作成する必要があります(小さなオーバーヘッドはありません)

クラスの静的メソッドを呼び出すとオーバーヘッドは発生しません。名前空間内の関数についても同様です。

関連する問題