Muss ich beim Erstellen einer Bibliothek sicherstellen, dass die privaten Methoden wie erwartet funktionieren, wenn sie nicht von anderen Methoden derselben Klasse, sondern von einer anderen Bibliothek durch Reflektion aufgerufen werden ?
Wenn beispielsweise eine private Methode private DoSomething(int number)
Folgendes erwartet:
number
ist eine positive Ganzzahl ungleich Null und:- Eine private Variable
string abc
ist nicht null und keine leere Zeichenfolge.
und vollständig, hässlich schlägt fehl , wenn diese beiden Bedingungen nicht übereinstimmen, muss ich diese Ausfälle behandeln , auch wenn ich weiß , dass alle Methoden in der Klasse wird always¹ assign eine nicht leere Wert abc
vor dem Aufruf DoSomething
, und übergeben Sie eine positive ganze Zahl ungleich Null auf diese Methode?
Mit anderen Worten, kann der Code, der nicht durch Reflektion vor unsicheren Anrufen geschützt ist, als Code geringer Qualität betrachtet werden , oder gehört er dem Anrufer, der Reflektion verwendet, um sicherzustellen, dass der Anruf nichts unterbricht?
Hinweis: Meine Frage deckt nur einen Standardsatz von Bibliotheken ab. Dies gilt nicht für Code, der sehr sicher sein muss (z. B. wenn jemand Interesse daran hat, Reflektion zu verwenden, damit er sich unerwartet verhält oder abstürzt).
¹ Weil die Klasse korrekt dokumentiert ist, weil es genügend Komponententests gibt, um sicherzustellen, dass kein anderer Entwickler diese Methode durchbricht usw.