Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator
Dopo oltre 4 anni si rinnova la serie Sony Alpha 7 con la quinta generazione, che porta in dote veramente tante novità a partire dai 30fps e dal nuovo sensore partially stacked da 33Mpixel. L'abbiamo provata per un breve periodo, ecco come è andata dopo averla messa alle strette.
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1
realme e Aston Martin Aramco F1 Team si sono (ri)unite dando alla vita un flagship con chip Snapdragon 8 Elite Gen 5 e design esclusivo ispirato alle monoposto di Formula 1. La Dream Edition introduce la nuova colorazione Lime Essence abbinata al tradizionale Aston Martin Racing Green, decorazioni intercambiabili personalizzate e una confezione a tema F1, intorno a uno smartphone dall'ottima dotazione tecnica con batteria da 7000mAh ricaricabile a 120W e isola fotografica intercambiabile
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum
Abbiamo partecipato all'OVHcloud Summit 2025, conferenza annuale in cui l'azienda francese presenta le sue ultime novità. Abbiamo parlato di cloud pubblico e privato, d'intelligenza artificiale, di computer quantistici e di sovranità. Che forse, però, dovremmo chiamare solo "sicurezza"
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 27-01-2008, 12:56   #1
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Orrore, abbiamo una GetType!!!

AbstractDroppable.getType. se ancora non mi sono rincoglionito del tutto e ricordo qualcosa di quanto mi ha insegnato fek, quella "cosa" va eliminata.
  • osservazione numero 1: cercando in Eclipse tutti i riferimenti a quella getType ne trova molti...
  • osservazione numero 2: ...molti dei quali sono delle cose disgustose vi faccio un esempio: la getType viene utilizzata da un metodo toString per ottenere un oggetto "tipo" che deve a sua volta restituire il nome del tipo (tramite un metodo getName tra l'altro; toString ci faceva proprio schifo eh?) utilizzato poi per costruire la stringa. ora, come mai tutta questa perifrasi della getType? perché passare per il "tipo" per ottenere il nome, non si può semplicemente mettere già nel droppable un metodo toString?
ps: si fek, abbiamo un volontario.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 15:32   #2
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
Quote:
Originariamente inviato da 71104 Guarda i messaggi
AbstractDroppable.getType. se ancora non mi sono rincoglionito del tutto e ricordo qualcosa di quanto mi ha insegnato fek, quella "cosa" va eliminata.
  • osservazione numero 1: cercando in Eclipse tutti i riferimenti a quella getType ne trova molti...
  • osservazione numero 2: ...molti dei quali sono delle cose disgustose vi faccio un esempio: la getType viene utilizzata da un metodo toString per ottenere un oggetto "tipo" che deve a sua volta restituire il nome del tipo (tramite un metodo getName tra l'altro; toString ci faceva proprio schifo eh?) utilizzato poi per costruire la stringa. ora, come mai tutta questa perifrasi della getType? perché passare per il "tipo" per ottenere il nome, non si può semplicemente mettere già nel droppable un metodo toString?
prendiamo come esempio questo, trovato poco fa in TestNextGemsPanel.java:
Codice:
        DroppableType firstGemType = firstGem.getGridObject().getType();
<...>
        assertEquals("gfx/droppables/" + firstGemType.getName() + "/"
            + firstGemColor.getName(),
            ((MockEngine)environment.getEngine()).getImage(0).getName());
in questo caso con getType().getName() si ottiene la parte variabile in funzione del tipo di droppable, del path completo corrispondente alla texture in uso per quella droppable
avendo le subdirectory nomi ("gems", "boxes", "stones", "flashing") interamente lowercase e soprattutto diversi dagli identificatori dei rispetti DroppableType, desumo che non si potesse passare per toString()...

comunque sì, la struttura attuale è troppo convoluta...
Quote:
ps: si fek, abbiamo un volontario.
ottimo
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 18:29   #3
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
major achievements dei refactoring che ho fatto oggi: ho eliminato una catena di if, ridisposto alcuni test case in modo tale che i packages rispecchino la struttura del codice di produzione, e ho eliminato un parametro in un metodo virtuale
più altri minor achievements.

PS: del metodo virtuale in questione va eliminato anche l'altro parametro, ci penso domani.

PPS: preciso che di tutto ciò solo la catena di if è in-topic
i prossimi passi per eliminare quella getType sono di trasportare in AbstractDroppable (se non addirittura eliminare del tutto) tutti i metodi che stanno in AbstractDroppableType: non ha assolutamente senso tenersi oggetti aggiuntivi per descrivere il tipo dei droppables quando in realtà la stessa AbstractDroppable si suddivide in BigGem, Gem, Chest, ecc.

per dirla in altri termini: non dobbiamo sfruttare la tabella delle funzioni virtuali degli oggetti AbstractDroppableType, ma quella degli oggetti AbstractDroppable.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 18:31   #4
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da 71104 Guarda i messaggi
(se non addirittura eliminare del tutto)
questa parentesi meritava un approfondimento.

molti di quei metodi ci tengo ad eliminarli proprio, e se ne guardate i nomi capirete il perché: isChest, isGem, isStone... sono tutte "simil-getType", cioè sono tutti metodi che testano a runtime il tipo di oggetto, e noterete anche che dove questi metodi vengono chiamati gli if non mancano di certo.

il metodo createInstance invece di per se' potrebbe anche restare, ma refattorizzando in modo tale da trasportarlo in AbstractDroppable esso si trasforma naturalmente in una semplice chiamata a un costruttore (almeno spero ).
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 21:43   #5
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
L'idea che cullo da parecchio tempo è quella di avere un'interfaccia (o classe astratta) base da cui far derivare tutti gli oggetti che stanno in una griglia, e di variare quindi soltanto l'implementazione dei metodi virtuali dei discendenti.

In sostanza il tutto si dovrebbe ridurre a un'interazione (più ad alto livello) fra oggetti che rispondono agli stessi "stimoli", e si "adeguano" di conseguenza.

Bisogna però definire per benino quest'interfaccia, e non è cosa semplice.
__________________
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 27-01-2008, 21:54   #6
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
AbstractDroppable non corrisponde alla descrizione?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 22:16   #7
Bonfo
Senior Member
 
L'Avatar di Bonfo
 
Iscritto dal: Nov 2005
Città: Bologna
Messaggi: 1303
Probabilmente la struttura convoluta viene fuori dalla stratificazione diversi task di diverse storie. Per fortuna esiste il refactoring!!! ( Chge forse non siamo stati sufficentemente bravi ad applicare ai tempi )

In ogni caso, se non ricordo male, il probelma del getType era in relazione all "colore" della gemma o del chest, non tanto relativo al tipo di droppable.

In ogni caso sono d'accordo con te, più "getType" si eliminano, meglio è!
__________________
Software engineer
Bonfo's Blog
Bonfo è offline   Rispondi citando il messaggio o parte di esso
Old 27-01-2008, 22:16   #8
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
Quote:
Originariamente inviato da cdimauro Guarda i messaggi
L'idea che cullo da parecchio tempo è quella di avere un'interfaccia (o classe astratta) base da cui far derivare tutti gli oggetti che stanno in una griglia, e di variare quindi soltanto l'implementazione dei metodi virtuali dei discendenti.
e, come sai, è un' idea che appoggio
Quote:
Bisogna però definire per benino quest'interfaccia, e non è cosa semplice.
con un po' di impegno, si dovrebbe riuscire in un paio di giorni ( fek torna mercoledì )

Quote:
Originariamente inviato da Bonfo Guarda i messaggi
Probabilmente la struttura convoluta viene fuori dalla stratificazione diversi task di diverse storie. Per fortuna esiste il refactoring!!! ( Chge forse non siamo stati sufficentemente bravi ad applicare ai tempi )
ora però si è molto più "scafati" che non ai tempi... non ci sono più scuse
Quote:
In ogni caso, se non ricordo male, il probelma del getType era in relazione all "colore" della gemma o del chest, non tanto relativo al tipo di droppable.
esatto
in quel caso si testava il colore della gemma passando dal nome della texture usata... bisogna vedere se ci sono altri casi di questo tipo ed eventualmente quali sono sono riferiti alla "logica" del gioco e quali effettivamente all' aspetto grafico (nel qual caso non servono assolutamente)

Quote:
Originariamente inviato da 71104
AbstractDroppable non corrisponde alla descrizione?
più o meno sì, se le si accorpa AbstractSingleDroppable e si rimuove la pletora di interfaccie attuale
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate

Ultima modifica di jappilas : 27-01-2008 alle 22:30.
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 09:21   #9
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Esattamente. Vorrei vedere eliminati tutti i metodi "isChest" ecc. sostituendoli con metodi che vengano interrogati, invece, su quello che questi oggetti sono in grado di fare (allo stato attuale o in risposta a determinate sollecitazioni), come ad esempio la possibilità di essere "inglobate" (in una big gem) oppure di essere distrutte, ecc.

Per quanto riguarda il colore, se serve conoscerlo si può sempre realizzare un metodo apposito che lo restituisce (non è come restituire un tipo).
__________________
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 28-01-2008, 10:03   #10
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Il fronte anti interfacce continua acrescere

Perché non aprite un branch e fate qualche commit sperimentale? Fran potrebbe non essere d'accordo ora ma magari se vede che il codice è più pulito potreste riuscire a convincero a fare un merge.
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 10:34   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
io non sono mica anti interfacce: io sono solo contrario a qualsiasi tipo di testing a runtime del tipo di un oggetto. isChest per me se ne deve andare, assieme ovviamente a isStone, isGem, ecc.
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 12:53   #12
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da 71104 Guarda i messaggi
io non sono mica anti interfacce: io sono solo contrario a qualsiasi tipo di testing a runtime del tipo di un oggetto. isChest per me se ne deve andare, assieme ovviamente a isStone, isGem, ecc.
come testi se in griglia una droppable è una stone, gem, chest, etc?


Comunque non sono convintissimo che si riescano a togliere tutti i vari isType senza complicare codice e test(a volte si può aver bisogno di comportamenti diversi per vari componenti, ma non è possibile/è complicato integrarli nel componente stesso)

Si potrebbe comunque provare come branch è vedere se ne vale la pena o no.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 12:58   #13
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
Quote:
Originariamente inviato da thebol Guarda i messaggi
come testi se in griglia una droppable è una stone, gem, chest, etc?
analizzando altre differenze dei droppables che ti ritrovi, ma non quella; oppure, se a fek va bene, utilizzando instanceof, cosa che io, nota bene, riterrei un obbrobbio solo nel codice di produzione, non nei test.

Quote:
Comunque non sono convintissimo che si riescano a togliere tutti i vari isType senza complicare codice e test(a volte si può aver bisogno di comportamenti diversi per vari componenti, ma non è possibile/è complicato integrarli nel componente stesso)
io nei miei progetti personali/universitari ci sono sempre riuscito...
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:01   #14
thebol
Senior Member
 
Iscritto dal: Dec 2000
Città: bologna
Messaggi: 1309
Quote:
Originariamente inviato da 71104 Guarda i messaggi
analizzando altre differenze dei droppables che ti ritrovi, ma non quella; oppure, se a fek va bene, utilizzando instanceof.
Proviamo a vedere se è fattibile senza complicare di più le cose.
thebol è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:17   #15
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Se vedo una GetType nella code base, prendo l'aereo da Varna, mi paracaduto in Italia, vi spezzo a tutti quanti le ginocchia e poi riparto per l'Inghilterra.

Certo che dopo la FP vi siete dati alla pazza gioia... le pagherete tutte :|
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:19   #16
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Il fronte anti interfacce continua acrescere

Perché non aprite un branch e fate qualche commit sperimentale? Fran potrebbe non essere d'accordo ora ma magari se vede che il codice è più pulito potreste riuscire a convincero a fare un merge.
A me piace lavorare per interfacce, ma non e' un dogma. Se il codice che esce dal refactoring e' piu' semplice e pulito, non c'e' alcun problema a fare il merge.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:20   #17
fek
Senior Member
 
L'Avatar di fek
 
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
Quote:
Originariamente inviato da 71104 Guarda i messaggi
io nei miei progetti personali/universitari ci sono sempre riuscito...
Ho scritto centinaia di migliaia di righe di codice di produzione senza usare nulla di simile al GetType, quindi non vedo il problema.
fek è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:29   #18
jappilas
Senior Member
 
L'Avatar di jappilas
 
Iscritto dal: Apr 2003
Città: Genova
Messaggi: 4739
Quote:
Originariamente inviato da 71104 Guarda i messaggi
analizzando altre differenze dei droppables che ti ritrovi, ma non quella; oppure, se a fek va bene, utilizzando instanceof, cosa che io, nota bene, riterrei un obbrobbio solo nel codice di produzione, non nei test.

io nei miei progetti personali/universitari ci sono sempre riuscito...
vedi, c'è un problema: in diamonds quelle interfaccie hanno dei client anche nel codice di produzione, nella fattispecie l' insieme delle grid action - le quali iterano sulle Droppables presenti in griglia esaminandone a runtime il tipo per fare le loro cose...

quindi, si può rimuovere le varie getType(), isChest() e affini - a patto però di ripensare anche il resto del codice che circonda la Grid;
oppure, si può come dici tu usare instanceof, ma l' "obbrobrio" finirebbe anche nel codice di produzione e non solo nei test;

oppure, si può:
lasciare un set di "capability query", relativo a ciò che le droppable specializzate possono eventualmente fare, come metodi virtuali nella classe base astratta, lasciare il resto del codice dei test più o meno com'è ora ( a riprogettarlo c'è sempre tempo) applicando un refactoring meno gravoso

EDIT: non avevo letto i post di fek
__________________
Jappilas is a character created by a friend for his own comic - I feel honored he allowed me to bear his name
Saber's true name belongs to myth - a Heroic Soul out of legends, fighting in our time to fullfill her only wish
Let her image remind of her story, and of the emotions that flew from my heart when i assisted to her Fate

Ultima modifica di jappilas : 28-01-2008 alle 20:41.
jappilas è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 13:37   #19
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
fek, tanto che ci sei devo chiederti due cose fondamentali:
1) che dobbiamo fare quando vediamo in una classe metodi pubblici utilizzati solamente dai test, cerchiamo di eliminarli e di testare in altri modi?
2) possiamo usare instanceof solo nei test, e non nel codice di produzione?
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 28-01-2008, 14:31   #20
cdimauro
Senior Member
 
L'Avatar di cdimauro
 
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
Quote:
Originariamente inviato da VICIUS Guarda i messaggi
Il fronte anti interfacce continua acrescere
Se fossi anti-interfacce non avrei masochisticamente proposto di crearne una per Environment (per far sparire le factory)...

Io vedo ogni costrutto sintattico come uno strumento, coi suoi pregi e difetti, e cerco di usare quello che mi sembra "migliore" per il particolare problema che mi si presenta.
__________________
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
 Rispondi


Sony Alpha 7 V, anteprima e novità della nuova 30fps, che tende la mano anche ai creator Sony Alpha 7 V, anteprima e novità della ...
realme GT 8 Pro Dream Edition: prestazioni da flagship e anima racing da F1 realme GT 8 Pro Dream Edition: prestazioni da fl...
OVHcloud Summit 2025: le novità del cloud europeo tra sovranità, IA e quantum OVHcloud Summit 2025: le novità del cloud...
Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI Care e DisplayPort 2.1a Un mostro da MSI: QD-OLED WQHD a 500 Hz con AI C...
DJI Neo 2 in prova: il drone da 160 grammi guadagna il gimbal e molto altro DJI Neo 2 in prova: il drone da 160 grammi guada...
ECOVACS DEEBOT T80 OMNI resta al prezzo ...
Roborock Qrevo Curv S5X a 499€: potenza ...
L'italiana Bending Spoons ha comprato Ev...
Pat Gelsinger, mai darlo per morto: piov...
ECOVACS DEEBOT MINI a 199€: prezzo pi&ug...
Codice rosso in casa OpenAI: priorit&agr...
AWS rinnova lo stack dell'IA: Trainium3,...
AWS entra nell'era degli agenti: il keyn...
Roscosmos: inventario a bordo della ISS ...
Arduino viene acquisita da Qualcomm e ca...
Un razzo spaziale Arianespace Vega C ha ...
Terra Next dà il via a Scale-Up P...
Il veicolo riutilizzabile ESA Space Ride...
Un Mousepad per mirare meglio: uno youtu...
Tokyo Electron sotto accusa: Taiwan cont...
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: 09:01.


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