Это не вопрос кодирования, а связанный с концепцией кодирования.У меня есть класс обслуживания с некоторыми методами, а также у этого класса есть два закрытых метода для анализа и проверки URL.
private boolean isUrlFormatValid(String url) {
Pattern pattern = Pattern.compile("^(https?:\\/\\/)?(www\\.)?([\\w]+\\.)+[\u200C\u200B\\w]{2,63}\\/?$");
Matcher matcher = pattern.matcher(url);
if (matcher.matches()) {
return true;
} else {
LOG.error("Url format is not valid");
return false;
}
}
private String parseUrlDomain(String url) throws Exception {
Pattern p = Pattern.compile("^(?:https?:\\/\\/)?(?:www\\.)?((?:[\\w]+\\.)+\\w+)");
Matcher m = p.matcher(url);
if (m.matches()) {
System.out.println(m.group(1));
return m.group(1);
}
throw new Exception("Url domain is not parsed ");
}
Эти коды работают хорошо, но я не уверен насчет некоторых моментов, таких как:
1-Как вы видите, оба метода имеют общие коды, создавая экземпляры pattern и matcher .Должен ли я создать их экземпляр в начале класса в качестве глобальной переменной?Если так, в чем причина этого и в чем его преимущество.
2 - В случае ошибки я не уверен, какая из них лучше;бросить исключение, как во втором методе, или просто зарегистрировать ошибку и продолжить, как в первом методе.
Следовательно, есть ли лучший метод для этого?Заранее спасибо.