2012-02-13 24 views
5

Entrambi questi sono accettati dal compilatore:ToString() è buono, cattivo o semplicemente ridondante?

ssMinnow = listStrLineElements[VESSEL_TO_AVOID].ToString(); 
ssMinnow = listStrLineElements[VESSEL_TO_AVOID]; 

è un modo preferibile all'altra? ToString() o non ToString(), questa è la domanda.

+1

se si sa che 'listStrLineElements' è ** sempre ** una stringa, non la userei, non ha senso trasmettere allo stesso tipo. – Kani

+0

Non è listStrLineElements un tipo ? Il nome suggerisce quello. Se non lo è, cambia il nome di conseguenza. – Holystream

+3

Questo è accettato anche dal compilatore: 'listStrLineElements [VESSEL_TO_AVOID] .ToString(). ToString(). ToString(). ToString();' ma ciò non significa che sia un buon codice ;-) Se è già una stringa, perché chiamare ToString? –

risposta

7

Non è solo superfluo, ma anche è pericoloso: se listStrLineElements[VESSEL_TO_AVOID] sembra essere null, l'applicazione sta per generare un'eccezione se si utilizza ToString(); senza ToString(), assegnerebbe semplicemente null a ssMinnow.

3

in Generale non è necessario richiamare il metodo ToString() se il tipo di oggetto restituito è già un String.

nel tuo esempio non possiamo dire che, come ssMinnow non mostra il tipo di dichiarazione: Presumo di aver usato var parola chiave che lavorerà con entrambi o listStrLineElements[VESSEL_TO_AVOID] restituisce già un String

1

Semplicemente ridondante. Preferisco lasciare ToString() dove non è necessario ma è un giudizio.

+0

In che modo si tratta di una sentenza, il giudizio è "devo scrivere codice ridondante o no", sicuramente qui c'è una risposta corretta. No, non si dovrebbe scrivere codice ridondante. –

+0

@ Ben Nel senso che non è scorretto lasciarlo lì, e alcune persone preferiscono essere esplicite anche quando non è necessario. Come ho detto, lo lascio fuori ma non è necessariamente sbagliato non farlo in quel modo. Soprattutto considerando che non sappiamo che questa è una stringa basata sulle informazioni fornite, potrebbe essere solo un tipo di dati con una conversione implicita definita. Il fraseggio della domanda, "buono cattivo o ridondante" implica anche che la persona che chiede vede una differenza tra qualcosa che è errato o qualcosa che è sbagliato, se si desidera riconoscerlo o meno. – heisenberg

+0

È errato lasciarlo lì, il fatto che ci sia una chiamata a 'ToString' implica che è necessario, quando non lo è. Ciò rende il codice meno leggibile poiché un altro dev potrebbe perdere tempo cercando di capire PERCHÉ questo codice è presente poiché sembra non servire a niente. Alcune persone hanno scelto di scrivere codice cattivo, non lo rende giusto.Riconosco che c'è un diverso tra cattivo e ridondante in quello che sono più tipi di codice cattivo rispetto al codice ridondante, ma il codice ridondante è sempre cattivo. Si noti che non considero ridondante il codice aggiunto ai fini della leggibilità, ma serve a uno scopo. –

4

Se listStrLineElements[VESSEL_TO_AVOID] restituisce una stringa, quindi sì, è ridondante. se restituisce un altro tipo, quindi no, non è ridondante.

0

Non utilizzare ToString se si sta già restituendo una stringa. Stai solo aggiungendo un sovraccarico non necessario.

0

Non è semplice come indicato. Ridondante, possibilmente; buono o cattivo, una questione di opinione. Poiché toString() sarà chiamato comunque se l'oggetto è trattato come una stringa da qualche parte, l'uso esplicito di toString() può fungere da indicatore per lo sviluppatore che legge il codice. La chiamata esplicita descrive più l'intento originale che lasciarlo come un'assunzione per il compilatore da soddisfare.

Problemi correlati