Исходный код
protected String[] processURL(String url) {
StringBuffers = newStringBuffer(url);
StringBuffer AfterRemoval = s.delete(0, 27);
Что не так в исходном коде
Здесь от урла отрезается начальная часть, по всей вероятности — доменное имя плюс одна-две верхних подпапки.
Такой код, безусловно, работать будет, но только в очень ограниченных условиях. Например, код сразу сломается, если в него будет передан урл на другом домене (такое может случиться, когда этот код будет запущен для тестового сервера).
Поэтому, более сложный, но безусловно правильный путь — парсить и преобразовывать урл с помощью библиотечных методов.
Другой важный недочёт исходного кода — слишком общие названия. Название метода processURL
не рассказывает, что конкретно делает этот метод, какое именно преобразование урла.
Название переменной AfterRemoval
не называет смысл значения, которое в этой переменной хранится. Вместо этого оно говорит об операции, которая была выполнена для получения значения. Это всё равно, что написать в меню ресторана «что-то, что было сварено в кастрюле» и «что-то, что было пожарено на сковороде».
Вариант рефакторинга
import java.net.URL;
protected String[] getPageRelativePath(String url) {
URL parsed_url = newURL(url);
String full_path = parsed_url.getPath();
String[] parsed_path = full_path.split('\\/', 2);
String relative_path = parsed_path[1];