Нет сомнений в том, что мы должны кодировать наши приложения, чтобы защитить себя от злонамеренных, любопытных и / или небрежных пользователей, но как насчет нынешних и / или будущих коллег?
Например, я пишу веб-API, который принимает параметры от пользователя. Некоторые из этих параметров могут соответствовать значениям в файле конфигурации. Если пользователь испортит URL-адрес и предоставит недопустимое значение для этого параметра, мое приложение выдаст ошибку при попытке прочитать из этого раздела файла конфигурации, который не существует. Поэтому, конечно, я вычищаю параметры перед тем, как читать из файла конфигурации.
Теперь, что если в будущем другой разработчик работает над этим приложением, добавляет другое допустимое значение для этого параметра, которое пройдет процесс очистки, но не добавляет соответствующий раздел в файл конфигурации. Помните, я защищаю приложение только от плохих пользователей, а не от плохих кодеров. Мое приложение не будет работать.
С одной стороны, я знаю, что все изменения должны быть проверены перед переходом к производству, и что-то подобное, несомненно, произойдет в ходе достойного сеанса тестирования, но с другой стороны, я стараюсь создавать свои приложения так, чтобы они лучше противостояли сбоям. насколько это возможно. Я просто не знаю, правильно ли включать изменение моего кода коллегами в список потенциальных точек отказа.
Для этого проекта я решил не проверять, существует ли соответствующий раздел файла конфигурации. Как нынешний разработчик, я бы не позволил пользователю указывать значение параметра, которое могло бы вызвать сбой, поэтому я ожидал бы, что будущий разработчик не введет поведение в производственную среду, которое может вызвать сбой ... или, по крайней мере, устранит такой чехол во время тестирования.
Что ты думаешь?
Ленивый ... или философски здравый?