Думаю, конструкцию if-else можно улучшить, но не могу придумать как. Что можно сделать?
if ((limit != null && !limit.matches("^-?\\d+$") && !limit.equals(""))
|| (length != null && !length.matches("^-?\\d+$") && !length.equals(""))
|| (limit != null && limit.matches("^-?\\d+$") && Integer.parseInt(limit) < 0)
|| (length != null && length.matches("^-?\\d+$") && Integer.parseInt(length) < 0))
{
resp.sendError(HttpServletResponse.SC_BAD_REQUEST);
}
else
{
resp.setContentType("application/json;charset=utf-8");
resp.getWriter().write(TextFileAPI.TextFileQuery(q, limit, length, appPath));
}
Код проверки валидности для limit и length одинаков, так что можно его вынести в отдельный метод и вызывать для каждого значения.
Допустимыми значениями, судя по коду, являются null, пустая строка, а также неотрицательные Integer.
В итоге получается так. Метод проверки:
private static boolean isCorrect(String value)
{
return (value == null || value.equals("") ||
(value.matches("^\\d+$") && Integer.parseInt(value) >= 0));
}
Его использование:
if (isCorrect(limit) && isCorrect(length))
{
//correct data handling
}
else
{
//incorrect data handling
}
Дабы при обработке больших чисел, не входящих в Integer (например, 3 миллиарда), метод isCorrect не "падал" с NumberFormatException, стоит несколько усложнить код:
private static boolean isCorrect(String value)
{
if (value == null || value.equals(""))
{
return true;
}
boolean isCorrect = false;
try
{
isCorrect = Integer.parseInt(value) >= 0;
}
catch (NumberFormatException ignored) { }
return isCorrect;
}
простой пример и я думаю вы поймете как применить к вашему коду:
var t_event={};
t_event[0]=function(){return;};
t_event[1]=function(a,b){ return console.log(a*b);},
test;
function test(_t,_event,_a,_b){
return _event[(!(_t === 1))+0](_a,_b);
};
test(0,t_event,3,5);
можно делать переход по "индексу" [0/1] в разных вариантах, это и будет отработка условия, просто проверки как таковой нет, по результату предыдущего действия (false/true) вы сразу "проваливаетесь" через индекс в нужную функцию или событие...
Современные инструменты для криптотрейдинга: как технологии помогают принимать решения
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости