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