Comments 8
Применяем рефакторинг «встраивание переменной» _result, документируем по scriptDoc, защищаемся от пустого параметра paramsNew (+ тем самым позволяем замещать пустой строкой <=> удалять) и улучшаем (улучшаем?) читабельность. Авось кому сгодится :).
/** * Функция для модификации GET-параметров uri * * @param {String} uri * @param {String} paramsNew * @param {Boolean} [isReplace] * */ var uriQueryParamsModifier = function (uri, paramsNew, isReplace) { var paramsUri; paramsNew = paramsNew || ''; paramsUri = ((paramsUri = uri.match(/\?([^#]+)/)) && paramsUri[1]); if (paramsUri && isReplace) { return uri.replace(/\?[^#]+/, paramsNew ? '?' + paramsNew : paramsNew); } if (paramsNew) { return uri.replace(/(#)|$/, (!paramsUri ? '?' : '&') + paramsNew + '$1'); } return uri; }
Согласен, хотя read-only стиль вполне подходит прагме 555 :)
Но!
ХМ.
Масло маслянное, если у Вас paramsNew == '', так чего стесняться?
И — завершающее return uri; — поясните, к чему так?
Кроме шуток — не понимаю смысла функции, возвращающей отданный ей аргумент. Тогда уж null, что ли.
Но!
if (paramsUri && isReplace) {
return uri.replace(/\?[^#]+/, paramsNew ? '?' + paramsNew : paramsNew);
}
ХМ.
Масло маслянное, если у Вас paramsNew == '', так чего стесняться?
if (paramsUri && isReplace) {
return uri.replace(/\?[^#]+/, paramsNew ? '?' + paramsNew : '' );
}
И — завершающее return uri; — поясните, к чему так?
Кроме шуток — не понимаю смысла функции, возвращающей отданный ей аргумент. Тогда уж null, что ли.
Точно, точно, camelCase или underscore стиль — не суть. Читабельность повышается, имхо, за счет масла масляного: условия читаемы по диагонали и вертикали — 1) если есть что заменять и чем, то… 2) если есть чем модифицировать (т.к. не замена/удаление, то добавление), то… 3) вырожденное условие в виде «return uri» реализует вырожденную функцию.
Вот последнее… тут зависит от восприятия — мне показалось, что будет менее неожиданным (Ruby?), если некий модификатор ничего не сделает с объектом ежели «обнулит» его. С другой стороны, вместо последнего return м. б. и исключение, и return null, в зависимости от требования внешней среды.
Вот последнее… тут зависит от восприятия — мне показалось, что будет менее неожиданным (Ruby?), если некий модификатор ничего не сделает с объектом ежели «обнулит» его. С другой стороны, вместо последнего return м. б. и исключение, и return null, в зависимости от требования внешней среды.
код можно сильно сократить вставив в начало функции
if (!paramsNew)
return uri;
ну и судя по логике работы, она должна называться uriQueryParamsModifie[d]
if (!paramsNew)
return uri;
ну и судя по логике работы, она должна называться uriQueryParamsModifie[d]
нельзя сократить. Вчитайтесь.
if (paramsUri && isReplace)
return uri.replace(/\?[^#]+/, '?' + paramsNew);
return uri.replace(/(#)|$/, (!paramsUri? '?': '&') + paramsNew + '$1');
в Вашем варианте paramsNew проверяется 3 раза (зачем?).
кроме этих проверок, при пустом paramsNew обрабатываются регулярные выражения (одно или два, если параметры уже есть). зачем все это, если заранее известен результат?
return uri.replace(/\?[^#]+/, '?' + paramsNew);
return uri.replace(/(#)|$/, (!paramsUri? '?': '&') + paramsNew + '$1');
в Вашем варианте paramsNew проверяется 3 раза (зачем?).
кроме этих проверок, при пустом paramsNew обрабатываются регулярные выражения (одно или два, если параметры уже есть). зачем все это, если заранее известен результат?
Sign up to leave a comment.
Javascript — работаем с search-частью произвольного url