Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto
Xiaomi ha portato sul mercato internazionale la nuova serie Redmi Note, che rappresenta spesso una delle migliori scelte per chi non vuole spendere molto. Il modello 15 Pro+ punta tutto su una batteria capiente e su un ampio display luminoso, sacrificando qualcosa in termini di potenza bruta e velocità di ricarica
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione
HONOR ha finalmente lanciato il suo nuovo flagship: Magic 8 Pro. Lo abbiamo provato a fondo in queste settimane e ve lo raccontiamo nella nostra recensione completa. HONOR rimane fedele alle linee della versione precedente, aggiungendo però un nuovo tasto dedicato all'AI. Ma è al suo interno che c'è la vera rivoluzione grazie al nuovo Snapdragon 8 Elite Gen 5 e alla nuova MagicOS 10
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata
Le webcam Insta360 Link 2 Pro e Link 2C Pro sono una proposta di fascia alta per chi cerca qualità 4K e tracciamento automatico del soggetto senza ricorrere a configurazioni complesse. Entrambi i modelli condividono sensore, ottiche e funzionalità audio avanzate, differenziandosi per il sistema di tracciamento: gimbal a due assi sul modello Link 2 Pro, soluzione digitale sul 2C Pro
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-06-2013, 12:14   #1
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
[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
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:22   #2
banryu79
Senior Member
 
L'Avatar di banryu79
 
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 12:24.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:29   #3
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2785
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";
http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx

Bellissimo secondo me, anche se spesso lavorando con stringhe finisco per non usarlo perché devo verificare anche che la stringa non sia vuota.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:36   #4
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
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.
In Java il cosidetto "Elvis operator" non c'è, ma la fortuna maggiore nell'usare Java come piattaforma è che la fuori ci sono un fottìo di linguaggi che compilano bytecode, ad esempio Kotlin e lui l'Elvis operator ce l'ha, oltre ad avere altri costrutti carini per assicurare la Null-safety.
__________________

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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:46   #5
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
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";
non è un problema, ma la mia non è una necessità lessicale, ma una semplice curiosità
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
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";
http://msdn.microsoft.com/en-us/libr...=vs.80%29.aspx

Bellissimo secondo me, anche se spesso lavorando con stringhe finisco per non usarlo perché devo verificare anche che la stringa non sia vuota.
ecco, cercavo qualcosa di simile in java, che intuisco non ci sia.
anche io mi trovo con controllare stringhe non vuote o non nulle...il classico metodo nelle librerie di progetto "stringEmpity"
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:47   #6
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
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));
Quando devi leggere il valore:
Codice:
id.or("all");
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:57   #7
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
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));
Quando devi leggere il valore:
Codice:
id.or("all");
interessante.

Comunque mi sembra di capire che "l'elvis operator" è stato implementato da java 1.7, quindi è utilizzabile in modo diretto
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12:58   #8
banryu79
Senior Member
 
L'Avatar di banryu79
 
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());
    }
}
E quindi (come Vicius):
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 13:13.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 13:05   #9
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da franksisca Guarda i messaggi
Comunque mi sembra di capire che "l'elvis operator" è stato implementato da java 1.7, quindi è utilizzabile in modo diretto
Come scusa?
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 13:20   #10
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
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());
    }
}
E quindi (come Vicius):
Codice:
Option<String> id = Option.of(request.getParameter(SoggettiConstant.SUBJECT_CALENDAR_ID));
calendarId = id.getOr("all");
non ho "bisogno" dell'esercizio

anche perchè già faccio qualcosa di simile..
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Come scusa?
Language Enhancements in Java 7
Direi di no
leggendo in giro sembrava di si, forse è qualche openpoint sulla jdk che avevano proposto e poi non implementato, magari lo implementeranno in java8 o magari no

grazie ancora
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 14:05   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da franksisca Guarda i messaggi
non ho "bisogno" dell'esercizio
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)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 15:20   #12
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
Quote:
Originariamente inviato da banryu79 Guarda i messaggi
Tutti ne abbiamo bisogno, e sempre
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
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 16:24   #13
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Quote:
Originariamente inviato da franksisca Guarda i messaggi
leggendo in giro sembrava di si, forse è qualche openpoint sulla jdk che avevano proposto e poi non implementato, magari lo implementeranno in java8 o magari no

grazie ancora
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.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 27-06-2013, 19:24   #14
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
Iscritto dal: Apr 2004
Città: La regione del Triplete
Messaggi: 5749
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.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
HONOR Magic 8 Pro: ecco il primo TOP del 2026! La recensione HONOR Magic 8 Pro: ecco il primo TOP del 2026! L...
Insta360 Link 2 Pro e 2C Pro: le webcam 4K che ti seguono, anche con gimbal integrata Insta360 Link 2 Pro e 2C Pro: le webcam 4K che t...
Motorola edge 70: lo smartphone ultrasottile che non rinuncia a batteria e concretezza Motorola edge 70: lo smartphone ultrasottile che...
Display, mini PC, periferiche e networking: le novità ASUS al CES 2026 Display, mini PC, periferiche e networking: le n...
Threads cresce e batte X su mobile a liv...
Televisori, asse Sony - TCL: c’è ...
Uso del carbone in calo in Cina e India ...
Una potente tempesta solare colpisce la ...
Italo fa la storia: Starlink arriver&agr...
Windows 11: rilasciati i fix di emergenz...
MacBook Air M4 in offerta su Amazon: il ...
Smartphone Motorola potenti a prezzi mai...
Dopo Las Vegas, Sphere raddoppia: in Mar...
Smarthome Tapo: funzionano bene, costano...
Valve aggiorna le linee guida Steam: chi...
PC portatili sempre più cari: ecc...
Samsung TV in offerta su Amazon: Neo QLE...
Sì, c'è un display è...
Fast restart di Windows spiegato 30 anni...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:21.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v