Я спрашиваю, потому что я пытаюсь использовать фальшивую фреймворк (Mockito), которая не позволяет вам издеваться над статическими методами. Заглядывая в него, я нашел немало сообщений в блогах, в которых говорилось, что у вас должно быть как можно меньше статических методов, но у меня возникают трудности, когда я обдумываю почему. В частности, почему методы, которые не изменяют глобальное состояние и являются в основном вспомогательными методами. Например, у меня есть класс под названием ApiCaller
, который имеет несколько статических методов. Одной из целей статического метода является выполнение HTTP-вызова, рассмотрение любых пользовательских проблем, которые наш сервер мог бы вернуть (например, пользователь не вошел в систему) и вернуть ответ. Чтобы упростить, что-то вроде:
public class ApiCaller {
...
public static String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
Чтобы использовать это все, что мне нужно сделать, это позвонить ApiCaller.makeHttpCall(url)
Теперь я мог бы легко сделать это не статическим методом, например:
public class ApiCaller {
...
public String makeHttpCall(Url url) {
// Performs logic to retrieve response and deal with custom server errors
...
return response;
}
}
а затем использовать этот метод call new ApiCaller().makeHttpCall()
, но это просто лишние накладные расходы. Может ли кто-нибудь объяснить, почему это плохо, и если есть лучшее решение для того, чтобы сделать методы не статическими (за исключением простого удаления ключевого слова), чтобы я мог заглушить эти методы с помощью насмешливой структуры?
Спасибо!