Сегодня я проводил рефакторинг некоторого кода в веб-приложении и наткнулся на что-то подобное в базовом классе для всех веб-страниц:
if (Request.QueryString["IgnoreValidation"] != null)
{
if (Request.QueryString["IgnoreValidation"].ToUpper() == "TRUE")
{
SessionData.IgnoreValidation = true;
}
}
Мне кажется, это очень плохая вещь ™, поэтому я немедленно удалил все следы этого флага из кода. С одной стороны, было несколько операторов if, которые были засорены повсюду, которые проверяли значение флага, что приводило к хаотичной и неясной логике. Во-вторых, я наткнулся на другой, более опасный флаг с именем «IgnoreCreditCardValidation». Вы можете догадаться, что это сделал ...
Затем я подумал об этом и вспомнил похожий пример из предыдущей работы. В коде приложения, продаваемого как «модуль защищенной аутентификации», был параметр QueryString, используемый для переопределения поведения по умолчанию, позволяя любому, кто его знает, обойти аутентификацию.
Теперь мой вопрос скорее подтверждение, настолько ли плоха эта практика, как кажется в моей голове, или я просто слишком остро реагирую, и это обычное дело? Есть ли случаи, когда для этого была бы веская причина? Мне это просто кажется ужасной смесью лени и небрежности.
Если это дубликат, пожалуйста, не стесняйтесь указывать мне в правильном направлении.
Спасибо!