2014-04-23 108 views
1

我正在開發一個Web應用程序,並且在服務器端收到參數時出現了一個問題。我初始化我的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即使同時聲明,否則任何UR做的是正確使用新設置屬性附加傷害並不需要更好的... –

+1

你能提供更完整的代碼嗎?因爲我沒有看到內部初始化DTO的原因。 Java中的代碼約定也使用CamelCase進行命名。 – Moses

+1

'駱駝套'也是個好主意。 –

回答

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語句之前初始化你的對象並且改變最後的if else塊。這是因爲我們不應該重複自己。想象一下,在創建對象之後,你必須爲每個if設置5個不同的字段,併爲每個if添加1個不同的set方法 - 這很醜陋。 –

+0

完美的答案,正是我需要知道的。實際上,我將它分配給一個字符串,這只是一個簡單的例子:)。謝謝! – lucasdc

2

Object_DTO object_DTO = null;不創建任何對象。

new Object_DTO()創建並初始化一個對象,只有在實際需要某個對象時才應該這樣做。