質問

次のパブリックインターフェイスがあります

public interface Bar{
   public void DoStuff();
}

内部バックエンドクラスを使用

internal class BarImpl : Bar{
   public void DoStuff(){
     // throw exception if invalid state
     // do something
   }
}

質問:

  • それだけ BarImpl 実装します Bar インターフェース。
  • BarImpl で例外をスローできます DoStuff 方法。

これらの例外を文書化することは理にかなっていますか Bar.DoStuff xml doc?

前もって感謝します、

役に立ちましたか?

解決

はい - これはそうであってもそうです BarImpl 唯一の実装者ではありません。

私が使用したい例は次のとおりです ストリーム 抽象的クラス 読んだ メソッドは、のユーザーが Stream この方法を使用すると、インスタンスがスローされると予想される場合があり、このクラスの実装者はさまざまなシナリオの下でスローする必要があります。

他のヒント

はい、そうです。他の開発者が準備され、発生する可能性のある例外を処理するのに役立ちます。 MSDNドキュメントを実行することにより、例外の準備をするのに何回役立ったのかを考えてください。

処理できる例外のみを文書化します。他の例外を文書化することは意味がありません。 「処理」の例外の私の定義は、この方法が例外をキャッチすることで約束された結果を提供できることです。

したがって、この答えはこれらの例外のみのためです。

オープン/クローズドの原則に従う場合は、コンクリートクラスではなく、インターフェイスの例外を文書化する必要があります。また、同じシナリオが発生した場合、すべての実装が同じ例外をスローする必要があります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top