Инициализация объектов на ноль или новый?

1

Я разрабатываю веб-приложение, и возникает вопрос, когда я получаю параметры на стороне сервера. Я инициализирую свой 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 в объявлении или сохранить способ, которым я занимаюсь?

  • 0
    Привет, если вы используете объект DTO внутри doPost, даже если атрибут не требуется, лучше установить с использованием new, одновременно заявляя, что вы делаете правильно ...
  • 1
    Можете ли вы предоставить более полный код? Потому что я не вижу причин, почему бы не инициализировать DTO внутри if. Также по соглашениям кода в Java используется CamelCase для именования.
Показать ещё 3 комментария
Теги:
performance
code-conventions

2 ответа

6
Лучший ответ

Я лично считаю, что это зависит от масштаба. 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();
        ...
    }
}
  • 0
    В вашем примере вы должны инициализировать ваш объект перед любым оператором if и изменить последний блок if на else. Это потому, что мы не должны повторяться. Представьте, что после создания объекта вы должны установить 5 разных полей одинаково для каждого if и добавить 1 разный метод set для каждого if - это было бы ужасно.
  • 0
    Идеальный ответ, именно то, что мне нужно было знать. На самом деле, я присваиваю его строке, это был простой пример :). Спасибо!
2

Object_DTO object_DTO = null; не создает никакого объекта.

new Object_DTO() создает и инициализирует объект, который вы должны делать только тогда, когда вам действительно нужен объект.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню