2012-02-13 24 views
5

Ambos son aceptados por el compilador:¿ToString() es bueno, malo o simplemente redundante?

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

es una forma preferible a la otra? ToString() o no ToString(), esa es la pregunta.

+1

si sabes que 'listStrLineElements' es ** siempre ** una cadena, no lo usaría, no tiene sentido convertir al mismo tipo. – Kani

+0

No listStrLineElements a List type? El nombre sugiere eso. Si no es así, cambie el nombre en consecuencia. – Holystream

+3

Esto también es aceptado por el compilador: 'listStrLineElements [VESSEL_TO_AVOID] .ToString(). ToString(). ToString(). ToString();' pero eso no significa que sea un buen código ;-) Si ya es una cadena, ¿Por qué llamar a ToString? –

Respuesta

7

No sólo es redundante, pero también es peligroso: si listStrLineElements[VESSEL_TO_AVOID] pasa a ser null, su aplicación va a lanzar una excepción si se utiliza ToString(); sin ToString(), simplemente asignaría null a ssMinnow.

3

en general no es necesario invocar el método ToString() es el tipo de objeto devuelto que ya es un String.

en su ejemplo que no podemos decir que a medida que ssMinnow no muestra el tipo de declaración: Asumo que ha usado var palabra clave que trabajará con los dos o listStrLineElements[VESSEL_TO_AVOID] rendimientos ya un String

1

simplemente redundante. Prefiero dejar ToString() donde no es necesario, pero es una decisión.

+0

De qué manera es una decisión de juicio, el juicio es "¿debo escribir código redundante o no?", Seguramente hay una respuesta correcta aquí. No, no deberías escribir código redundante. –

+0

@Ben En el sentido de que no es incorrecto dejarlo allí, y algunas personas prefieren ser explícitos incluso cuando no sean necesarios. Como dije, lo dejo pero no es necesariamente incorrecto no hacerlo de esa manera. Especialmente teniendo en cuenta que no sabemos que se trata de una cadena basada en la información proporcionada, podría tratarse simplemente de un tipo de datos con una conversión implícita definida. El fraseo de la pregunta, "bueno, malo o redundante" también implica que la persona que pregunta ve la diferencia entre algo que es incorrecto o algo que está mal, ya sea que lo reconozca o no. – heisenberg

+0

ES incorrecto dejarlo allí, el hecho de que haya una llamada a 'ToString' implica que es necesario, cuando no lo es. Esto hace que el código sea menos legible ya que otro desarrollador puede perder el tiempo tratando de descubrir POR QUÉ este código está allí ya que parece no servir para nada. Algunas personas eligen escribir código incorrecto, no lo hace correcto.Reconozco que hay una diferencia entre mala y redundante en cuanto a que hay más tipos de código incorrecto que redundantes, pero el código redundante siempre es malo. Tenga en cuenta que no considero que el código agregado para legibilidad sea redundante, sirve para un propósito. –

4

Si listStrLineElements[VESSEL_TO_AVOID] devuelve una cadena, entonces sí, es redundante. si devuelve algún otro tipo, entonces no, no es redundante.

0

No utilice ToString si ya está devolviendo una cadena. Simplemente está agregando sobrecarga innecesaria.

0

No es tan simple como se indica. Redundante, posiblemente; bueno o malo, una cuestión de opinión. Como toString() se llamará de todos modos si el objeto se trata como una cadena en alguna parte, el uso explícito de toString() puede servir como un poste indicador para el desarrollador que lee el código. La llamada explícita describe más el intento original que dejarlo como una suposición que el compilador debe cumplir.

Cuestiones relacionadas