Newsgroup: it.comp.java
Titolo: Teoria sul toString(): scelte in fase di implementazione

Quali criteri vanno seguiti in fase di progettazione 
dell'implementazione del metodo toString() di una classe?
Ad esempio bisogna tendere a realizzare un toString() che "dica quanto 
più possibile" o è accettabile fornire "lo stretto necessario"? Può il 
toString() fornire più o meno informazioni a seconda dello stato in cui 
si trova l'oggetto?
Un caso pratico che mi ha messo dei dubbi:
Una classe Xyz descrive un prodotto presente in un esercizio commerciale.
Tale prodotto di tipo Xyz può essere disponibile per il prestito o meno 
e questo stato è descritto da una variabile booleana.
Chi ha scritto le specifiche della classe ha stabilito che ci deve essre 
una serie di campi che danno informazioni specifiche in caso l'articolo 
sia fuori in prestito: ad esempio, il numero che identifica il cliente 
che ce l'ha in prestito, la data di uscita, il limite consentito per il 
rientro, ecc.
In questo caso è corretto:
-implementare toString() senza che produca informazioni relativamente a 
quei campi che nel caso il prodotto sia fuori in prestito danno le 
informazioni specifiche sul prestito?
-implementare toString() in modo che dia tali informazioni solo nel caso 
il prodotto sia fuori in prestito?
  ciao e grazie anticipatamente per le risposte!
-- 
Google Image Labeler cumulative score: 97210

 dell'implementazione del metodo toString() di una classe?
Io di solito faccio un toString() minimale, poi se durante lo sviluppo 
mi serve qualche informazione in più la aggiungo poi.
Il toString() lo uso solo nei log per capire di che oggetto si sta 
parlando. Se un'informazione non mi serve per capire cosa sta facendo il 
programma non la metto.
-- 
Andrea Francia
http://andreafrancia.blogspot.com/2008/07/colinux-linux-dentro-windows.html

mrzac ha scritto:

Da come la vedo io un metodo toString deve fare il toString altrimenti 
e' un'altra cosa. Che so, diventa un metodo getBaseString o 
getNonSensibleData o toStringUnaParteSola o ancora meglio un toStringAMeta'.
--
ac
--
ac

 dell'implementazione del metodo toString() di una classe?
quelli che preferisci.
non c'è alcuna direttiva se non quella di restituire una stringa che 
descriva l'istanza in modo significativo per il tuo scopo.
fra le apache commons lang c'è la sempre utile ToStringBuilder.
http://commons.apache.org/lang/api/org/apache/commons/lang/builder/ToStringBuilder.html
-- 
++ Fino all'anno scorso avevo un solo difetto. Ero presuntuoso.
http://unopuntozero.wordpress.com/
http://www.flickr.com/photos/marko_po/

 non c'è alcuna direttiva 
Questa cosa mi ricorda tanto il comitato centrale del PC CCCP ;-{)
--
ac

 si trova l'oggetto?
Dipendentemente dalla classe e dal suo utilizzo, il metodo toString puo' 
essere implementato in modi diversi o semplicemente lasciar fare al 
toString ereditato.
Ad esempio, GregorianCalendar ti dice vita morte e miracoli, Date ti 
formatta la data secondo un certo schema, ma non si puo' dire che uno 
sia meglio dell'altro. Se devo mettere una data in una cella di una 
JTable e' (che senza un rendere fa solo toString dell'oggetto) 
sicuramente meglio GregorianCalendar.getTime().toString(), ma se devo 
scrivere un log diagnostico allora e' forse meglio 
GregorianCalendar.toString()
-- 
Dr.Ugo Gagliardelli,Modena,ItalyCertifiedUindoscrasherAñejoAlcoolInside
Spaccamaroni andate a cagare/Spammers not welcome/Spammers vão à merda
Spamers iros a la mierda/Spamers allez vous faire foutre/Spammers loop
schijten/Spammers macht Euch vom Acker/Spamerzy wypierdalac'