メソッドは静的にすることができますが、そうすべきでしょうか? 質問する

メソッドは静的にすることができますが、そうすべきでしょうか? 質問する

ReSharper は、静的にできる ASP.NET ページごとに複数の関数を指摘します。それらを静的にすると役立ちますか? それらを静的にして、ユーティリティ クラスに移動する必要がありますか?

ベストアンサー1

パフォーマンス、名前空間の汚染などはすべて二次的な問題だと私は考えています。論理的なものは何かを自問してください。メソッドは型のインスタンスに対して論理的に動作していますか、それとも型自体に関連していますか? 後者の場合は、静的メソッドにします。制御できない型に関連している場合のみ、ユーティリティ クラスに移動します。

場合によっては、インスタンスに対して論理的に作用するが、インスタンスの状態をまだ使用しないメソッドがあります。たとえば、ファイル システムを構築していて、ディレクトリの概念は理解しているが、まだ実装していない場合、ファイル システム オブジェクトの種類を返すプロパティを記述できます。そのプロパティは常に "file" になりますが、論理的にはインスタンスに関連付けられているため、インスタンス メソッドにする必要があります。これは、メソッドを仮想化する場合にも重要です。特定の実装では状態が必要ないかもしれませんが、派生クラスでは必要になる場合があります。(たとえば、コレクションが読み取り専用かどうかを尋ねる場合、そのコレクションの読み取り専用形式をまだ実装していないかもしれませんが、それは明らかにコレクション自体のプロパティであり、型のプロパティではありません。)

おすすめ記事