Я буду защищаться так, как вам нужно. Я думаю, что это немного двусмысленно, но я постараюсь объяснить.
Когда вы правите метод, если этот метод имеет входные параметры, вы должны принять решение о том, какими вы ожидаете эти параметры. В ситуациях и местах в приложении это будет отличаться. Например, если метод или фрагмент кода принимает данные из пользовательского ввода, вам нужно охватить всю основу кода и обработать любой ввод соответствующим образом, будь то с помощью сообщения об ошибке или каким-либо приятным способом отображения неприемлемых данных.
Если метод является открытым API, то же самое. Вы не можете контролировать то, что входит, поэтому вы должны попытаться охватить все аспекты и программы соответственно.
Для методов, которые производятся в ядре вашего проекта, здесь вы должны принять решение. Предполагаю ли я, что поступающие данные предварительно проверены и проверены до их поступления, или я должен поставить необходимые проверки. Я предполагаю, что это зависит от концептуального уровня метода и приемлемого места для проверки. Итак, что я мог бы рассмотреть это:
1) Это единственное место, где мне нужно будет сделать эту проверку? Нужно ли проверять эту переменную во множестве разных мест для этого условия. Если да, могу ли я сделать проверку один раз выше по цепочке, а затем принять законность
2) Ожидаются ли другие компоненты системы для работы с методами и интерфейсами, которые я пишу. Если да, то можете ли вы контролировать с помощью операторов отладки assert, исключений отладки, комментирования методов и общей архитектуры системы требуемый результат, или же потребуется проверка данных на месте.
3) Каковы результаты неудачи на данный момент в коде. Это приведет к провалу всего этого? Будет ли любая ошибка обнаружена в другом месте и будет ли эта ошибка, по крайней мере, обнаружена.
4) Есть ли смысл ставить здесь чек? Иногда проверка части возможных поврежденных данных, хотя и помогает решить проблему в этот момент, а не исключает ошибки, может помочь скрыть это. В этот момент вы могли бы часами искать другую проблему только для того, чтобы найти фактическую проблему из-за правильной проверки данных в цепочке событий, которая каскадно совпадает с той, о которой сообщили пользователь / разработчик.
В общем, я программист защиты, однако я также считаю, что при тщательном тестировании TDD и подходящем модуле вы можете проверять код на требуемых уровнях и быть уверенным, что он работает так, как должен, когда доберетесь до каких-либо разделов более низкого уровня. ,