Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo
Lenovo Legion Go 2 è la nuova handheld PC gaming con processore AMD Ryzen Z2 Extreme (8 core Zen 5/5c, GPU RDNA 3.5 16 CU) e schermo OLED 8,8" 1920x1200 144Hz. È dotata anche di controller rimovibili TrueStrike con joystick Hall effect e una batteria da 74Wh. Rispetto al dispositivo che l'ha preceduta, migliora ergonomia e prestazioni a basse risoluzioni, ma pesa 920g e costa 1.299€ nella configurazione con 32GB RAM/1TB SSD e Z2 Extreme
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti
A re:Invent 2025, AWS mostra un’evoluzione profonda della propria strategia: l’IA diventa una piattaforma di servizi sempre più pronta all’uso, con agenti e modelli preconfigurati che accelerano lo sviluppo, mentre il cloud resta la base imprescindibile per governare dati, complessità e lock-in in uno scenario sempre più orientato all’hybrid cloud
Cos'è la bolla dell'IA e perché se ne parla
Cos'è la bolla dell'IA e perché se ne parla
Si parla molto ultimamente di "bolla dell'intelligenza artificiale", ma non è sempre chiaro perché: l'IA è una tecnologia molto promettente e che ha già cambiato molte cose dentro e fuori le aziende, ma ci sono enormi aspettative che stanno gonfiando a dismisura i valori delle azioni e distorcendo il mercato. Il che, com'è facile intuire, può portare a una ripetizione della "bolla dotcom", e forse anche di quella dei mutui subprime. Vediamo perché
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: 2782
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


Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'' per spingere gli handheld gaming PC al massimo Lenovo Legion Go 2: Ryzen Z2 Extreme e OLED 8,8'...
AWS re:Invent 2025: inizia l'era dell'AI-as-a-Service con al centro gli agenti AWS re:Invent 2025: inizia l'era dell'AI-as-a-Se...
Cos'è la bolla dell'IA e perché se ne parla Cos'è la bolla dell'IA e perché se...
BOOX Palma 2 Pro in prova: l'e-reader diventa a colori, e davvero tascabile BOOX Palma 2 Pro in prova: l'e-reader diventa a ...
FRITZ!Repeater 1700 estende la rete super-veloce Wi-Fi 7 FRITZ!Repeater 1700 estende la rete super-veloce...
Cloud sovrano: l'approccio di Broadcom c...
HONOR conferma l'arrivo in Italia di Mag...
La Cina sotto pressione impone maniglie ...
OpenAI integra le app in ChatGPT per tra...
NVIDIA sarebbe pronta a tagliare la prod...
Prezzo minimo storico per iPhone 16 Pro:...
Riot Games scopre una falla nei BIOS che...
Beats in super offerta su Amazon: aurico...
Batterie elettriche, Samsung SDI e Stell...
Clivet presenta Fullness, la pompa di ca...
SpaceX lancerà 167 razzi spaziali...
Yakuza Kiwami 3 e Dark Ties protagonisti...
Privacy a rischio: ecco la VPN che regis...
SpaceX ha annunciato che un satellite St...
ASUSTOR presenta i nuovi NAS Lockerstor ...
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: 18:12.


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