Perché usare condizionatamente un pannello vuoto in Apache Wicket è una cattiva pratica?

1

Quando Apache ha pubblicato l'elenco delle best practice , hanno raccomandato di evitare l'aggiunta di un pannello vuoto in modo condizionale e hanno fornito il seguente esempio di cosa NON fare:

if(MySession.get().isNotLoggedIn()) {
    add(new LoginBoxPanel("login"))
}
else {
    add(new EmptyPanel("login"))
}

Tuttavia, vedo un sacco di questo tipo di codice quando eseguo il peer review, tranne per il fatto che la seconda condizione di solito assomiglia a questo:

    add(new EmptyPanel("login")).setVisible(false);

I programmatori giustificano il codice in questo modo dicendo che non vogliono costruire il componente originale se non lo visualizzeranno. Mi sembra un argomento logico. Qualcuno può spiegare cosa ci manca e perché questa è una cattiva pratica?

    
posta bigtopia 06.01.2016 - 16:42
fonte

1 risposta

1

Creare un componente in modo condizionale non è sicuro. Cosa succede se non viene creato nulla a causa delle condizioni speciali? (MarkupId non ha trovato eccezioni ..)  In Wicket dovresti evitare le modifiche dell'albero dei componenti . Dicono che è più saggio generare sempre il componente e renderlo responsabile della visualizzazione di se stesso . Questo racchiude la logica aziendale. Inoltre è riutilizzabile, quindi non avrai la sensazione di dover essere consapevoli di duplicare ancora e ancora la parte delle condizioni. Esempio di implementazione corretta:

public class YourComponent extends Component{

    ...

    @Override
    public boolean isVisible(){
        Boolean yourCondidtion;
        yourCondidtion = ...
        return yourCondidtion;
    }
};

o qualche volta ..

add(new YourComponent("id", ...)){
    @Override
    public boolean isVisible(){
       Boolean yourCondidtion;
       yourCondidtion = ...
       return yourCondidtion;
    }
};
    
risposta data 23.01.2017 - 11:51
fonte

Leggi altre domande sui tag