При создании библиотеки я должен убедиться, что закрытые методы должны работать, как и ожидалось, при вызове не другими методами того же класса, а другой библиотекой через отражение ?
Например, если частный метод private DoSomething(int number)
ожидает, что:
number
является положительным ненулевым целым числом, и:- закрытая переменная
string abc
не является пустой и не пустой строкой,
и совершенно, безобразно терпит неудачу, если эти два условия не совпадают, я должен обработать эти сбои, даже если я знаю, что все методы в классе всегда будут присваивать непустое значение abc
перед вызовом DoSomething
и передавать положительное ненулевое целое число этому метод?
Другими словами, можно ли считать код, который не защищен от небезопасных вызовов посредством отражения, кодом низкого качества , или он принадлежит вызывающей стороне, которая использует отражение, чтобы гарантировать, что вызов ничего не нарушает?
Примечание: мой вопрос касается только стандартного набора библиотек. Это не распространяется на код, который должен быть в высшей степени безопасным (то есть когда кто-то может заинтересоваться использованием отражения, чтобы заставить его вести себя неожиданно или аварийно завершать работу).
¹ Поскольку класс правильно задокументирован, потому что существует достаточно модульных тестов, чтобы быть уверенным, что любой другой разработчик не сломает этот метод и т. Д.