2014-04-23 2 views
1

웹 응용 프로그램을 개발 중이며 서버 측에서 매개 변수를 받으면 질문이 생깁니다. 내 DTO의 (데이터 전송 객체) null에 로컬 변수로을 초기화하고 특정 매개 변수가 전달되면 객체를 new으로 초기화합니다. 내 코드를 설명하기위한 예제 :개체를 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

안녕의 atribute 통해 UR 행함 잘 무엇이든 그렇지 선언하면서 새로운 사용하여 설정하는 것이 더 필요하지 않은 경우에도 당신의 doPost 내부 DTO 객체를 사용하는 경우 ... –

+1

더 완벽한 코드를 제공 할 수 있습니까? 왜냐하면 내가 DTO를 내부에서 초기화하지 않는 이유를 알지 못하기 때문입니다. 또한 Java의 코드 규칙에 따라 CamelCase를 사용하여 이름을 지정합니다. – Moses

+1

'Camel-casing'도 좋은 생각입니다 .. –

답변

6

저는 개인적으로 그것이 범위에 달려 있다고 생각합니다. if 성명을 사용하면 object_DTO이 사용됩니까? 이 코드 예에서는 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 문 앞에 개체를 초기화하고 else to else 블록을 변경해야합니다. 우리 스스로를 반복해서는 안되기 때문입니다. 상상해보십시오. 개체를 만든 후에는 if에 대해 5 개의 다른 필드를 정확히 동일하게 설정하고 모든 if에 대해 1 개의 다른 set 메서드를 추가해야합니다. 즉 추한 것입니다. –

+0

완벽한 답변, 정확히 내가 알 필요가있는 것. 실제로, 나는 String에 할당하고 있는데, 그것은 간단한 예일 뿐이다. :) 감사! – lucasdc

2

Object_DTO object_DTO = null;은 개체를 만들지 않습니다.

new Object_DTO() 실제로 개체가 필요할 때만 수행해야하는 개체를 만들고 초기화합니다.

관련 문제