Я разрабатываю веб-приложение, и возникает вопрос, когда я получаю параметры на стороне сервера. Я инициализирую свой DTO (объект передачи данных) как локальные переменные в null
и когда передается определенный параметр, я инициализирую свой объект new
. Пример для иллюстрации моего кода:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
Object_DTO object_DTO = null;
if(request.getParameter("parameter").equals("hello")) {
object_DTO = new Object_DTO();
object_DTO.setAttr("attr");
...
}
}
Мой вопрос относительно производительности: какой лучший способ инициализировать объекты? Должен ли я установить его на new
в объявлении или сохранить способ, которым я занимаюсь?
Я лично считаю, что это зависит от масштаба. object_DTO
ли object_DTO
вне этого оператора if
? В этом примере кода может оказаться полезным использовать null
.
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
// Note that unless except in certain cases (IoC)
// this scenario is quite easy to avoid
Object_DTO object_DTO = null;
if(request.getParameter("parameter").equals("hello")) {
object_DTO = new Object_DTO();
object_DTO.setAttr("attr");
...
} else if (request.getParameter("parameter").equals("goodbye")) {
object_DTO = new Object_DTO();
}
if (object_DTO == null) {
// Bad response
}
}
В противном случае всегда старайтесь использовать наиболее ограниченную область для переменной, но по производительности это незначительно.
Однако при отдельном примечании о производительности я бы переставал называть getParameter()
несколько раз. Присвойте его строке и обратитесь к ней:
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
String parameter = request.getParameter("parameter");
if (parameter.equals("hello")) {
Object_DTO = new Object_DTO();
...
}
}
Object_DTO object_DTO = null;
не создает никакого объекта.
new Object_DTO()
создает и инициализирует объект, который вы должны делать только тогда, когда вам действительно нужен объект.