Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria
vivo X300 Pro rappresenta un'evoluzione misurata della serie fotografica del produttore cinese, con un sistema di fotocamere migliorato, chipset Dimensity 9500 di ultima generazione e l'arrivo dell'interfaccia OriginOS 6 anche sui modelli internazionali. La scelta di limitare la batteria a 5.440mAh nel mercato europeo, rispetto ai 6.510mAh disponibili altrove, fa storcere un po' il naso
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
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 11-04-2008, 14:23   #261
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Se rivedo il mio vecchio codice, mi sento male: MOLTO diverso da quello che tiro fuori da qualche anno a questa parte. :|
Questo anche io, scrivo codice decisamente migliore... ma da qui all'abolizione degli if ce ne metterò ancora parecchio.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:25   #262
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
In tutta onestà debbo dire che nel mio codice gli if sono ancora abbastanza presenti nonostante le rifattorizzazioni, ma la tendenza è quella di ridurli all'osso (senza if poi il codice è molto più leggibile).

Diciamo che quando ho tempo per rifattorizzare, mi capita di sistemare meglio il codice, eliminandone qualcuno.

Se rivedo il mio vecchio codice, mi sento male: MOLTO diverso da quello che tiro fuori da qualche anno a questa parte. :|
Per altro eliminare gli if mi da' un'interessante vantaggio collaterale in questo periodo: il codice esce piu' veloce perche' elimino i branch che non vanno molto a genio di una CPU in-order a pedali.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:29   #263
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Indubbiamente. Con quelle carrette (come le chiami tu ) un branch misprediction è LETALE per la pipeline... :|
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:35   #264
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da fek Guarda i messaggi
Io sto iniziando ad abolire gli if dal mio codice.
http://www.metodiagili.it/campagna-anti-if.html


thebol è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:44   #265
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da thebol Guarda i messaggi
La voglio!
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:53   #266
shinya
Senior Member
 
L'Avatar di shinya
 
Iscritto dal: Jul 2005
Città: Bologna
Messaggi: 1130
Quote:
Originariamente inviato da thebol Guarda i messaggi
Ahaha! che sborata!
shinya è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 14:54   #267
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
sinceramente prima di entrare in questo forum manco sapevo cosa significasse agile XD se non era per il fatto di averlo letto una o due volte in una tesi riguardandte un certo peuck(), non era una sviolinata come può sembrare eh' (in effetti e' vero non avevo mai letto sta parola asd)


ma perchè a scuola non li insegnano gia dalle superiori questi metodi di sviluppo? alla fine non e' difficile in se, ma lo diventa se per molti anni ci si e' fossilizzati come me in modi completamente sbagliati T.T, io senza if non so come disegnarlo un programma e riguardando dei programmi fatti alle superiori mi sono reso conto perche a volte non li continuavo e mi fermavo

Ultima modifica di m.distrutti : 11-04-2008 alle 15:10.
m.distrutti è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 15:25   #268
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Alle superiori? Manco all'università le insegnano!

P.S. STUPENDA quella maglietta!!!
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 15:45   #269
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
Manco all'università le insegnano!
È più che altro questa la cosa strana.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 15:48   #270
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Mica tanto. Molti docenti sono abbastanza reazionari: imparano alcune cose, e se le tengono strette.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro
@LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro
Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys
cdimauro è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 16:22   #271
m.distrutti
Member
 
L'Avatar di m.distrutti
 
Iscritto dal: Sep 2007
Messaggi: 207
nel corso della mia uni lo stanno per iniziare lo unit testing , il refactoring dovrei aspettare la magistrale T.T

meglio cominciare ora

Ultima modifica di m.distrutti : 11-04-2008 alle 16:26.
m.distrutti è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 16:53   #272
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Speravo che fornissero qualche esempio concreto di realizzazione "agile", invece ritorna sempre il solito esempio che si realizza bene tramite ereditarietà.
Ma come lo tolgo l'if in un caso simile?
Codice:
if (tbUsername.Text.Length < 8 || tbUsername.Text.Length > 50)
{
    lbError.Visible = true;
    return;
}

Ultima modifica di tomminno : 11-04-2008 alle 16:56.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 16:54   #273
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Posta anche il resto del codice altrimenti non possiamo capire bene...
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 17:08   #274
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Speravo che fornissero qualche esempio concreto di realizzazione "agile", invece ritorna sempre il solito esempio che si realizza bene tramite ereditarietà.
Ma come lo tolgo l'if in un caso simile?
Codice:
if (tbUsername.Text.Length < 8 || tbUsername.Text.Length > 50)
{
    lbError.Visible = true;
    return;
}
Codice:
    lbError.Visible = IsVisible();
Codice:
bool IsVisible()
{
  return tbUsername.Text.Length < 8 || tbUsername.Text.Length > 50;
}
IsVisible() non e' un if, ma una proprieta'.
Il return si implementa senza if conoscendo il contesto del metodo. Molto probabilmente e' la situazione ideale per uno State pattern.

Qualcosa di simile a:

Codice:
currentState[IsVisible()].DoSomething();
Easy.

Ultima modifica di fek : 11-04-2008 alle 17:17.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 17:23   #275
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da cionci Guarda i messaggi
Posta anche il resto del codice altrimenti non possiamo capire bene...
Ridotto all'osso è una validazione dati lato server:
Codice:
private void Page_Load(object sender, System.EventArgs e)
{
if (!IsPostBack) {
/*Controllo sulla lunghezza dello username per validazione dati*/ if (tbUsername.Text.Length < 8 || tbUsername.Text.Length > 50) {
lbError.Visible = true; lbError.Text = "Username non valido"; return;
} if (tbPassword.Text.Length < 8) {
lbError.Text = "La password non rispetta le policy"; return;
} if (Session["data"] == null) {
lbError.Visible = true; lbError.Text = "Sessione scaduta"; return;
} Login();
}
}
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 17:31   #276
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
Quote:
Originariamente inviato da fek Guarda i messaggi
Il return si implementa senza if conoscendo il contesto del metodo. Molto probabilmente e' la situazione ideale per uno State pattern.

Qualcosa di simile a:

Codice:
currentState[IsVisible()].DoSomething();
Easy.
Certo che sostituire ad ogni possibile if un qualcosa del genere il numero di classi aumenta esponenzialmente e tutte devono avere accesso alla classe base (in questo caso una pagina asp), il che comporta anche creare metodi/proprietà per impostare i controlli o renderli pubblici direttamente (che non è proprio l'ideale) quindi altro lavoro se una pagina ha una ventina di controlli significa scrivere altrettanti get e set con altre validazioni dei dati (visto che è la classe pagina a conoscere i criteri di validità, campi solo numerici o formattati in un certo modo)
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 17:55   #277
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Ridotto all'osso è una validazione dati lato server:
Ovvero uno State pattern grosso come una casa. L'oggetto Validator ritorna lo State object corrente che imposta i campi di Text come necessario.
Certo che se al contrario usi catene di if, poi ti servono commenti per capire che cosa succede in un pezzo di codice che non e' chiaro di suo

Qui il problema e' proprio la scarsa qualita' del codice di partenza, ad esempio:

Codice:
if (!IsPostBack)
{
// malloppo di if
Inizia a scriverlo con la logica dritta e non negata:

Codice:
if (IsPostBack)
{
  return;
}
Cosi' ti accorgi che l'essere in PostBack e' uno stato, non serve trattarlo con un if, e tutto quello che viene dopo e' un'azione...

Ultima modifica di fek : 11-04-2008 alle 18:01.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 17:58   #278
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da tomminno Guarda i messaggi
Certo che sostituire ad ogni possibile if un qualcosa del genere il numero di classi aumenta esponenzialmente e tutte devono avere accesso alla classe base (in questo caso una pagina asp), il che comporta anche creare metodi/proprietà per impostare i controlli o renderli pubblici direttamente (che non è proprio l'ideale) quindi altro lavoro se una pagina ha una ventina di controlli significa scrivere altrettanti get e set con altre validazioni dei dati (visto che è la classe pagina a conoscere i criteri di validità, campi solo numerici o formattati in un certo modo)
Al contrario, scrivendo buon codice diminuisce il numero di classi e diventano piu' coese. Non per altro si chiama programmazione orientata agli oggetti.
Non serve avere accesso alla classe base per tutto se non si ragiona in ottica C, basta passare le informazioni strettamente necessarie agli oggetti che le devono usare. Ovvio, ci vuole un po' di dimestichezza, ma non serve scrivere un solo get/set

Poi con anonymous class, delegate e ammenicoli vari queste cose si fanno in una manciata di righe codice. Basta togliersi dalla testa gli.


Ultima modifica di fek : 11-04-2008 alle 18:04.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 18:31   #279
tomminno
Senior Member
 
Iscritto dal: Oct 2005
Messaggi: 3306
[quote=fek;21971668]Ovvero uno State pattern grosso come una casa. L'oggetto Validator ritorna lo State object corrente che imposta i campi di Text come necessario.
Certo che se al contrario usi catene di if, poi ti servono commenti per capire che cosa succede in un pezzo di codice che non e' chiaro di suo

Qui il problema e' proprio la scarsa qualita' del codice di partenza, ad esempio:

Codice:
if (!IsPostBack)
{
// malloppo di if
Quote:
Inizia a scriverlo con la logica dritta e non negata:

Codice:
if (IsPostBack)
{
  return;
}

Cosi' ti accorgi che l'essere in PostBack e' uno stato, non serve trattarlo con un if, e tutto quello che viene dopo e' un'azione...

In una pagina ASP cambia poco perchè spesso c'è qualcosa da fare anche nel caso IsPostBack.

Sinceramente nelle pagine web mi riesce poco di evitare gli if, ci sono così tanti controlli da fare che mi torna decisamente più facile l'if (e da quanto vedo in giro non sono certo il solo).
Ogni volta che peschi una variabile dalla sessione devi controllare che non sia nulla e affidarsi alle eccezioni significherebbe riempire il codice di decine try catch, idem per i controlli web in cui in base allo stato di uno decidi o meno se mostrare un altro controllo.
tomminno è offline   Rispondi citando il messaggio o parte di esso
Old 11-04-2008, 18:34   #280
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da tomminno Guarda i messaggi
In una pagina ASP cambia poco perchè spesso c'è qualcosa da fare anche nel caso IsPostBack.
Quello che accade spesso non conta. Conta quello che accade. E nel codice che hai scritto un if negato come quello e' semplicemente cattivo codice.

Quote:
Sinceramente nelle pagine web mi riesce poco di evitare gli if, ci sono così tanti controlli da fare che mi torna decisamente più facile l'if (e da quanto vedo in giro non sono certo il solo).
Ogni volta che peschi una variabile dalla sessione devi controllare che non sia nulla e affidarsi alle eccezioni significherebbe riempire il codice di decine try catch, idem per i controlli web in cui in base allo stato di uno decidi o meno se mostrare un altro controllo.
Chi ha mai parlato di affidarsi alle eccezioni? Bisogna affidarsi alla scrittura di buon codice semplice e non procedurale come ti e' stato mostrato in tutti gli esempi che hai riportato.
Il fatto che tu non veda come un if possa essere eliminato, non vuol dire che non sia possibile. E' sempre possibile, basta volerci provare
Una lettura a Design Patterns ti farebbe un gran bene: quasi tutti gli esempi che fai sono gia' stati ampiamente risolti.
fek è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione vivo X300 Pro: è ancora lui il re della fotografia mobile, peccato per la batteria Recensione vivo X300 Pro: è ancora lui il...
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 ...
Il trailer più atteso dell'anno &...
I gamer vogliono i monitor OLED: sopratt...
Samsung alza l’asticella dei televisori ...
Energie rinnovabili 2025: quasi 42% del ...
Le auto elettriche volano in tutta Europ...
Nuovo look per la finestra Esegui su Win...
Rad Power Bikes è in bancarotta: ...
Cronos: The New Dawn diventa più ...
Riot Games alza lasticella dell'anti-che...
Netflix dice addio a 111 titoli original...
Samsung prepara un foldable più l...
Nintendo Switch 2: in arrivo cartucce pi...
Evento storico: la prima squadra di robo...
Fallito il lancio del razzo spaziale nip...
Truffa RAM: moduli DDR4 spacciati per DD...
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: 16:34.


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