Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza
Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza
Passano gli anni, anzi i decenni, ma la domanda puntualmente riemerge fra le mail degli utenti meno esperti, alla ricerca di consigli e mossi dai più svariati motivi. Ecco le considerazioni da fare e come la pensiamo, poi ognuno acquisti quello che vuole.
realme GT7: un "flaghsip killer" concreto! La recensione
realme GT7: un "flaghsip killer" concreto! La recensione
Abbiamo provato l'ultimo smartphone di realme, il nuovo GT7. Si tratta di un device che si colloca in una fascia di mercato delicata, ovvero quella che possiamo definire medio-alta. La specifica che salta all'occhio è senza dubbio la sua batteria da 7.000 mAh e un design elegante e premium. Ma come funziona nel quotidiano? E soprattutto è davvero un Flagship Killer? Ve lo diciamo nella nostra recensione completa.
Oracle guida Stargate UAE: nasce il supercluster per l'IA sovrana
Oracle guida Stargate UAE: nasce il supercluster per l'IA sovrana
Il cloud ottimizzato per l'intelligenza artificiale di Oracle si combina con un'infrastruttura per la sovranità sul dato negli Emirati Arabi. "Questa implementazione epocale stabilisce un nuovo standard per la sovranità digitale", afferma Larry Ellison, fondatore di Oracle
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 26-06-2013, 11:14   #1
franksisca
Senior Member
 
L'Avatar di franksisca
 
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
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 11: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 11:24.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 11:29   #3
wingman87
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";
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, 11: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, 11:46   #5
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
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, 11: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, 11:57   #7
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
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, 11: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 12:13.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 26-06-2013, 12: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, 12:20   #10
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
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, 13: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, 14:20   #12
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7929
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, 15: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, 18:24   #14
zanardi84
Senior Member
 
L'Avatar di zanardi84
 
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.
zanardi84 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Meglio un MacBook o un PC portatile con Windows, oggi? Scenari, dubbi e qualche certezza Meglio un MacBook o un PC portatile con Windows,...
realme GT7: un "flaghsip killer" concreto! La recensione realme GT7: un "flaghsip killer" concr...
Oracle guida Stargate UAE: nasce il supercluster per l'IA sovrana Oracle guida Stargate UAE: nasce il supercluster...
Tutto sulla nuova Tesla Model Y: autonomia in autostrada, prova bagagliaio e dettagli Tutto sulla nuova Tesla Model Y: autonomia in au...
HONOR 400 Pro trasforma ogni scatto in capolavoro animato. Recensione HONOR 400 Pro trasforma ogni scatto in capolavor...
Grok, Stable Diffusion e NotebookLM fra ...
EK presenta il custom loop più se...
Ripetitori Wi-Fi AVM FRITZ! in sconto su...
Diablo Immortal compie 3 anni: ecco come...
Oggi tante offerte sulle PlayStation 5: ...
OPPO AI Livephoto: l'intelligenza a...
Le auto elettriche rilasciano pochissima...
Microsoft rilascia il terzo aggiornament...
Buone notizie per la smart home: tado&de...
iPad Pro con chip M4 e display XDR a 1.0...
Senua's Saga: Hellblade 2, in arrivo l'e...
Apple è record contro le frodi: 9...
Xiaomi annuncia un trimestre record e ut...
Ecco un TV da 40 pollici con Alexa a sol...
Google Pixel 9, 9 Pro e 9 Pro XL, tutti ...
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:42.


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