Думаю, конструкцию 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) вы сразу "проваливаетесь" через индекс в нужную функцию или событие...
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Задача следующая: дать доступ к учебным "pet" проектам с внешней машины наименее трудозатратным способом
Есть сайдбар, высота которого превышает высоту экранаКак известно, position: sticky при прокрутке просто закрепляет верх блока вверху страницы...
Здравствуйте! Подскажите, пожалуйста, правильно ли я решаю вопрос:
Всем приветКак по нажатию кнопки "Выбрать" на одном блоке, data-background-color стали smoke на двух других? Код сдесь: https://codepen