2016-04-23 9 views
1

Ist es besser, eine Bedingung einmal zu prüfen, Variablen zu definieren und diese Variablen zu verwenden?Ist es besser, Zustandsvariablen zu definieren oder keine Variablen zu verwenden und die Bedingung jedes Mal zu überprüfen?

<c:if test="${someCondition}"> 
    <c:set var="varOne" value="1" /> 
    <c:set var="varTwo" value="2" /> 
    <c:set var="varThree" value="3" /> 
    <c:set var="varFour" value="4" /> 
    <c:set var="varFive" value="5" /> 
</c:if> 

${varOne} 
... 
${varTwo} 
... 
${varThree} 
... 
${varFour} 
... 
${varFive} 

Oder ist es besser, keine Variablen zu verwenden und die Bedingung jedes Mal zu überprüfen, wenn ein Wert ausgegeben werden soll?

${someCondition ? "1" : ''} 
... 
${someCondition ? "2" : ''} 
... 
${someCondition ? "3": ''} 
... 
${someCondition ? "4": ''} 
... 
${someCondition ? "5": ''} 
+0

'Bedingte Variablen definieren'! = 'Variablen bedingt definieren'. – EJP

Antwort

1

Wenn Sie gehen jede Variable in vielen Orten in Ihnen Seite, erste Ansatz zeigen (wenn nur ein einziges Mal eine Bedingung überprüfen) wird mehr bevorzugt. Weil Sie damit Doppelarbeit vermeiden können.

Wenn Sie Variablen nur einmal anzeigen, brauchen Sie keine zusätzlichen <c:if und zweiten Ansatz ist in Ordnung. Weil es einfacher und lesbarer ist.


Natürlich ist dies nur meine Meinung, aber ich würde es vorziehen, diese Logik-Controller bewegen:

@Controller 
public class MyController{ 

    @RequestMapping("/my-mapping") 
    public String showView(ModelMap model){ 
     model.addAttribute("varOne", someCondition?1:null); 
     model.addAttribute("varTwo", someCondition?2:null); 
     //etc ... 
     return "view-name"; 
    } 
} 

In diesem Fall wird Ihre Sicht klar und einfach bleiben, und alle Business-Logik wird an einer Stelle (JSP wird übrigens nichts anzeigen, wenn Sie als Wert null übergeben).

+0

Danke, Ken. Der erste Ansatz scheint mir leichter zu halten, da sich die gesamte Logik an einer Stelle oben befindet und es sinnvoller ist, wenn die Variablen mehrfach verwendet werden. In meinem Fall werde ich die Variablen nur einmal verwenden. Ich war einfach nicht sicher über die Leistungsaspekte von mehreren Zustandsprüfungen vs definierten Variablen. Wissen Sie jetzt, schlagen Sie immer noch die zweite Option in meinem Fall vor, da ich die Variablen nur einmal verwenden muss (vorausgesetzt, ich habe keinen Zugriff auf den Controller)? – Talha

+0

@Talha Einfache Vergleichsoperation ist fast nichts für moderne Computer. Um einen Unterschied in der Leistung zu spüren, müssen Sie Millionen von Werten vergleichen. Mach dir keine Sorgen darüber. In der gleichen Zeit ist Lesbarkeit und Entwicklungsproduktivität ein sehr wichtiger Punkt. Wenn Sie oder jemand anderes nach dem Code der Seite nach langer Zeit suchen wird, ist es leicht zu vergessen, dass die Variable '$ {varOne}' woanders definiert ist (besonders wenn der Code der Seite groß genug ist). Es sieht so aus, als ob es vom Modell kam. Nicht klarer Moment. Also, meine Antwort ist ja. Ich schlage Ihnen immer noch einen zweiten Ansatz vor. –

+1

Danke für den Rat, Ken. – Talha

Verwandte Themen