Ich denke, Sie sind auf dem richtigen Weg. Weder das Werfen, Fangen noch das Dokumentieren aller potenziell auslösbaren Ausnahmen ist sinnvoll. Es gibt Zeiten, in denen die Produktstringenz ein höheres Maß an Ausnahmebeschäftigung und Dokumentation erfordert (z. B. bestimmte sicherheitskritische Aspekte eines Systems).
Die Strategie, defensiver zu sein und Vertragskonzepte zu verwenden, um Vorbedingungen (und Nachbedingungen) für insbesondere nachgeschaltete Anrufer (z. B. alles, was einem öffentlichen oder geschützten Mitglied ähnelt) zu identifizieren, ist häufig effektiver und flexibler. Dies gilt nicht nur für die Implementierung, sondern auch für die Dokumentation. Wenn Entwickler wissen, was erwartet wird, halten sie sich eher an die Regeln und sind weniger verwirrt oder missbrauchen den von Ihnen geschriebenen Code.
Einige der häufigsten Dinge, die dokumentiert werden sollten, sind Nullparameter. Oft gibt es eine Konsequenz für ihre Verwendung, die das Ergebnis zu etwas führt, das normalerweise nicht zu erwarten ist, aber aus verschiedenen Gründen zulässig und verwendet wird, manchmal aus Gründen der Flexibilität. Als Verbraucher eines Mitglieds mit Parametern, die Nullwerte oder andere spezielle, nicht rationale Werte (wie negative Zeit oder negative Größen) zulassen, erwarte ich, dass diese identifiziert und erklärt werden.
Für Nicht-Null-Parameter möchte ich als Verbraucher eines öffentlichen oder geschützten Mitglieds wissen, dass Null nicht zulässig ist. Ich möchte wissen, wie hoch der gültige Wertebereich im angegebenen Kontext ist. Ich möchte die Konsequenzen der Verwendung von Werten kennen, die außerhalb des normalen Bereichs liegen, aber ansonsten in einem anderen aufrufenden Kontext gültig sind (z. B. ist der Wert des Typs im Allgemeinen für jede Operation gültig, jedoch nicht hier - wie bei einem booleschen Parameter, der dies nicht tut Erwarten Sie nicht false als gültigen Wert.
Was die Plattform oder andere bekannte Schnittstellen betrifft, muss man bei der Dokumentation meiner Meinung nach nicht bis zum Äußersten gehen. Da Sie als Entwickler jedoch die Möglichkeit haben, die Implementierung von den jeweiligen Plattformrichtlinien zu unterscheiden, sollten Sie beachten, wie diese Richtlinien möglicherweise von Wert sind.
Speziell für IDisposable bieten Implementierungen dieser Schnittstelle häufig eine alternative Methode, die dem expliziten Entsorgungsprozess vorgezogen wird. Markieren Sie in diesen Fällen die bevorzugte Methode und beachten Sie, dass die explizite Entsorgung nicht bevorzugt wird.