PDA

Visualizza la versione completa : [JAVA] if con molteplici or


Prazision
04-07-2005, 23:12
Dunque:
ho una classe java che ha un metodo che recupera un parametro String.
tale parametro puo' avere molteplici valori e all'interno del metodo c'è un if così strutturato

if((param.equals("QA"))||(param.equals("aA"))||(param.equals("zA"))||(param.equals("sdQA"))||
(param.equals("QAw1"))||(param.equals("QAs"))||(param.equals("QzA"))||(param.equals("QAaaq1"))||(param.equals("zzz"))
||(param.equals("oo")))
{
.....codice
}

insomma per intenderci ci sono vari OR(e potrebbero anche crescere)

dal punto di vista funzionale tutto ok ma da quello della sintassi mi sembra stia diventando unpo' strano.
come posso modificare una simile sintassi per renderla leggibile???
ho visto che switch si usa solo per i char e per gli int; ho pensato magari di mettere tutte le stringhe in un array(o un vettore) e poi usare un if tipo:

if(param è nel vettore)
{
.....codice
}

mi conviene fare qualcosa di simile o è meglio lasciare il codice come è???
suggerite qualche altra soluzione??

grazie

netarrow
04-07-2005, 23:38
potresti sennò creare un metodo privato isValidParam e dentro ci metti solo il controllo andando a capo per ogni || stando bene in ordine.

Dopo la parte di prima diventarà:



if(isValidParam(param)) {
//code
}


cmq anche qualla del vettore potrebbe andare, hai anche i metodi di Collections di ricerca pronti per essere usati.

:ciauz:

Prazision
04-07-2005, 23:44
grazie

Prazision
04-07-2005, 23:47
Originariamente inviato da netarrow
potresti sennò creare un metodo privato isValidParam e dentro ci metti solo il controllo andando a capo per ogni || stando bene in ordine.

Dopo la parte di prima diventarà:



if(isValidParam(param)) {
//code
}


cmq anche qualla del vettore potrebbe andare, hai anche i metodi di Collections di ricerca pronti per essere usati.

:ciauz:
grazie innanzitutto

ipotesi 1:beh ma con la tua soluzione cambierebbe poco rispetto a mettere tutto nell'if


ipotesi vettore: l'uso di un vettore non peggiorerebbe le prestazioni??

netarrow
05-07-2005, 00:11
usando il metodo sarebbe più ordinato perchè quel if starebbe da solo in uno campo di visibilità e sarebe più facile da formattare e rendere leggibile.

Per quanto riguarda il vettore se usi gli algoritmi di Collections le prestazioni cambierebbero di poco; certo ci sarebbe un'oggetto in più in memoria e qualche dati aggiunto che renderebbe più pesante il programma ma proprio di poco.

Io cmq farei il metodo in più ben ordinato:



private boolean isValidparam(String param) {
return ((param.equals("QA"))|| (param.equals("aA"))||
(param.equals("zA"))||(param.equals("sdQA"))||
(param.equals("QAw1"))||(param.equals("QAs"))||
(param.equals("QzA"))||(param.equals("QAaaq1"))||
(param.equals("zzz"))||(param.equals("oo")));
}


:ciauz:

Prazision
05-07-2005, 00:30
mille grazie

Loading