В моем веб-приложении есть метод, который анализирует такие параметры URL-адреса.
...
layerName = HtmlPage.Document.QueryString["Layer"] . . . ;
...
В одном из отделов нашей компании есть список URL-адресов с параметрами для этого приложения, которые сложно изменить по неизвестным мне причинам. Они могут использовать такой URL-адрес. ... / default.aspx? Service = Wells & Layer = ActiveWells & Query = XYZ IN ('1234567890 ...')
В последнее время кое-что изменилось примерно так. Название слоя «ActiveWells» изменено на «Лунки участия на поверхности». Имя слоя «BoreStick» изменено на «WellBores». Таким образом, предустановленные параметры URL этого отдела больше не работают.
Мой менеджер сказал мне добавить код, который изменил бы любые экземпляры «ActiveWells» на что-то вроде «Наземные колодцы участия». Затем менеджер сказал, что позже, когда отдел с параметрами URL изменит их все на новые имена, мы сможем удалить этот код.
Я не знаю точно, что такое «тесная связь»; но я знаю, что это плохо, и это звучит как пример этого. Мне также кажется плохой идеей добавлять код с намерением сохранить его временно и удалить позже, потому что этот код может никогда не быть удален и превратиться в окаменелость.
Но я выполнил свои заказы и добавил такой код:
layerName = NameConverter.LayerNameChange(layerName);
В статическом методе LayerNameChange есть оператор switch.
Спустя месяцы или годы, разработчик, ответственный за это приложение, должен знать, что придет и удалит его, когда другой отдел завершит изменение всех предустановленных параметров URL.
Я полагаю, что другой сценарий, похожий на этот, был бы, если бы у приложения на базе консоли или Windows были параметры, которые он ожидал для
Main(string[] args){...}
Есть ли лучший способ сделать это?
Изменить:
Что, если бы вместо того, что я сказал выше, я сделал бы что-то вроде этого псевдокода ниже.
private void MethodToParseURL_Parameters(Func<string, string> nameReplace)
{
. . .
layerName = nameReplace(layerName);
. . .
}
Вызывающий метод будет иметь что-то вроде,
MethodToParseURL_Parameters(new Func<string, string>(NameConverter.LayerNameChange));
Почему метод синтаксического анализа должен знать о существовании класса NameConverter?
Я спросил себя об этом.
В конце концов, это не входит в обязанности синтаксического анализа параметров URL, как я это вижу.
Не знаю, слишком ли я задумываюсь над этим. Я новичок в этом уровне восприятия развития. Я понимаю, что на этот вопрос уже был дан ответ, но мы будем очень признательны за любые дальнейшие комментарии по этой моей новой идее.