コードインスペクション:メンバーは静的(共有)にできます(非 private アクセシビリティ)
以下のメソッド Print を考えてみましょう。
ソリューション全体の分析が有効化されている場合、JetBrains Rider は Print にインスタンスの使用がないため、静的にできることを提案します。 しかし、意味は? 実際、静的メンバーは特定の状況下でわずかなパフォーマンス向上をもたらします。
Microsoft のドキュメントはこれについて何を言いたいのですか?
- インスタンスデータへアクセスせず、インスタンスメソッドを呼び出さないメンバーは静的(Visual Basic では Shared)にできます。 メソッドを静的にした後、コンパイラーはこれらのメンバーへの非仮想呼び出しサイトを生成します。 非仮想呼び出しサイトを生成すると、各呼び出し時ランタイムで現在のオブジェクトポインターが null でないことを確認するチェックを防ぐことができます。 これにより、パフォーマンス重視のコードで測定可能なパフォーマンス向上が得られます。 場合によっては、現在のオブジェクトインスタンスにアクセスできないことが正しさの問題となることがあります。
ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。
簡易的なグローバル使用状況チェック: JetBrains Rider 設定 の ページで ソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示する を選択し、 Ctrl+Alt+S を実行します。
ソリューション全体解析: JetBrains Rider 設定 の ページで ソリューション全体の分析を有効化する を選択します Ctrl+Alt+S。
報告されたメンバーがソリューション内で直接使用されていない場合でも、リフレクションなどによって間接的に使用される場合や、単にパブリック API として設計されている場合もあります。 これらのすべてのケースでは、次のいずれかの方法でメンバーの使用状況チェックインスペクションを 抑制する必要があります。
推奨される方法は、暗黙的に使用されるメンバーを コードアノテーション属性で装飾することです。 この目的のために、 [UsedImplicitly] と [PublicAPI] の属性があります。これらは機能的に似ていますが、メンバーが実際にどのように使われているか、あなたやチームメイトが理解できます。
また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。 これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。
そして最後に、特定の使用チェックインスペクションを、 抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。