|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
[JAVA] Scrittura codice in modo elegante
c'è qualcosa di più elegante di questo???
Codice:
calendarId = request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID) == null ? "all" : request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID);
__________________
My gaming placement |
![]() |
![]() |
![]() |
#2 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Se non è un problema usare variabili locali per aumentare la leggibilità allora io di solito preferisco fare così:
Codice:
id = request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID); calendarId = (id != null) ? id : "all";
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 26-06-2013 alle 11:24. |
![]() |
![]() |
![]() |
#3 |
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2772
|
Concordo con banryu79. Altrimenti se hai molte istruzioni di quel tipo puoi crearti un metodo statico...
Per curiosità, in C# c'è questo: Codice:
calendarId = request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID) ?? "all"; Bellissimo secondo me, anche se spesso lavorando con stringhe finisco per non usarlo perché devo verificare anche che la stringa non sia vuota. |
![]() |
![]() |
![]() |
#4 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#5 | ||
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
Quote:
anche io mi trovo con controllare stringhe non vuote o non nulle...il classico metodo nelle librerie di progetto "stringEmpity" ![]() ![]() ![]()
__________________
My gaming placement |
||
![]() |
![]() |
![]() |
#6 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Dai un occhiata alla libreria guava di Google. C'è una classe che si chiama Optional che modella quello che vuoi fare. Crei un oggetto così:
Codice:
Optional<String> id = Optional.of(request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID)); Codice:
id.or("all"); |
![]() |
![]() |
![]() |
#7 | |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
Comunque mi sembra di capire che "l'elvis operator" è stato implementato da java 1.7, quindi è utilizzabile in modo diretto
__________________
My gaming placement |
|
![]() |
![]() |
![]() |
#8 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Oppure si scrive lui una classe utility (oltre ad essere effettivamente utile, è anche un buon esercizio):
Codice:
... public class Option<T> { public static <T> Option<T> of(T arg) { return new Option<>(arg); } private final T value; public Option(T value) { this.value = value; } public boolean isEmpty() { return value == null; } public boolean isDefined() { return value != null; } public T getOr(T alt) { return isEmpty() ? alt : value; } public T get() { return value; } public boolean hasValue(T value) { return isDefined() && get().equals(value); } @Override public String toString() { return String.format("Option[%s]", get()); } } Codice:
Option<String> id = Option.of(request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID)); calendarId = id.getOr("all");
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) Ultima modifica di banryu79 : 26-06-2013 alle 12:13. |
![]() |
![]() |
![]() |
#9 | |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Quote:
Language Enhancements in Java 7 Direi di no ![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
|
![]() |
![]() |
![]() |
#10 | ||
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
Quote:
![]() anche perchè già faccio qualcosa di simile.. Quote:
![]() grazie ancora
__________________
My gaming placement |
||
![]() |
![]() |
![]() |
#11 |
Senior Member
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
|
Tutti ne abbiamo bisogno, e sempre
![]()
__________________
As long as you are basically literate in programming, you should be able to express any logical relationship you understand. If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it. (Chris Crawford) |
![]() |
![]() |
![]() |
#12 |
Senior Member
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
|
si, come tutti abbiamo bisogno di 48 ore al giorno
![]() ![]() ![]() purtroppo sai meglio di me che i tempi lavorativi impediscono (con una cattiva progettazione e/o una cattiva analisi) di scrivere il codice come vorremmo. su un altro progetto ho potuto scrivermi un bella libreria personale che faceva qualcosa del genere, ma qui non ho potuta usarla per limiti applicativi
__________________
My gaming placement |
![]() |
![]() |
![]() |
#13 |
Senior Member
Iscritto dal: Oct 2001
Messaggi: 11471
|
Si erano stati proposti due nuovi operatori ?: e ?. ma sono stati rifiutati. Per quanto riguarda java non credo li vedremo mai. Se vuoi giocarci c'è sempre groovy che li ha implementati.
|
![]() |
![]() |
![]() |
#14 |
Senior Member
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5730
|
L'eleganza secondo me passa anche attraverso l'uso delle parentesi.
Personalmente trovo che la leggibilità sia molto migliore aprendo le graffe a capo in una nuova linea. Questo permette di identificare immediatamente i metodi, i blocchi e i cicli, sfruttando anche l'indentazione del codice, senza dover andare a caccia delle parentesi. Mi piace anche rendere meno sintetico il codice esplicitando il più possibile per far assumere un significato univoco.
__________________
Trattative felicemente concluse con domienico120, xbax88 ed engiel, ottimi e seri utenti. |
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:52.