2011-05-28 19 views
7

Me gustaría saber por qué una variable no utilizada es incorrecta.¿Por qué las variables no utilizadas son malas?

¿Es porque el compilador crearía un binario más grande? En caso afirmativo, ¿hay alguna herramienta/script que pueda agregar una palabra clave unused o algo así?

+5

porque si no lo usa, no hay punto de tener que – Ibu

+0

@Ibu hago esta pregunta porque uso un poco de wich API no utilice una gran cantidad de variables, y me quedé impresionado de la cantidad que hay son – klefevre

+0

¿Por qué son buenos? ¿Que están haciendo alli? – EJP

Respuesta

17

El compilador le da advertencias a pista en las cosas que podría potencialmente ser un problema o no intencional.

las variables no utilizadas serán optimizados distancia más probable. Pero tal vez la intención de hacer algo con ellos - y en ese caso el compilador notas amablemente que puede haber hecho algo que no quería.

¿De qué sirve una variable que declara pero no lee ni escribe?

+0

Ok, pensé que una gran cantidad de variables sin usar podría influir en la compilación. – klefevre

+0

Puede requerir un poco más de memoria durante la compilación debido a más entradas necesarias en la tabla de símbolos, pero aparte de eso, supongo que no notará nada. – Joey

+0

+1 esta es definitivamente la mejor respuesta. Por ejemplo, muchas veces agregué una variable de índice extra 'j' o' k' pero reutilicé accidentalmente la anterior, y la advertencia del compilador (que generalmente detiene la compilación debido a '-Werror') capta el error incluso antes de intentarlo ejecutando el programa. –

8

En mi humilde opinión, las variables no utilizadas complican la legibilidad de su código. No importa qué idioma estés usando.

+0

Al consultar las fuentes en este momento, muchas de ellas, esta es la única advertencia que recibo, pero unas 4000 veces en diferentes partes. No entiendo por qué uno declara tantas variables sin usar. –

8

Porque ...

La perfección se alcanza no cuando no hay nada más que añadir, sino cuando no queda nada de quitar.

+2

'#include int main() {printf ("Todas las pruebas pasaron \ n"); } ' Enviarlo ;-P –

+1

@Steve: s/printf/Pone/.. 4 caracteres ('\ n' no es necesario) cerca de la perfección ... –

+0

@William: verdad, aunque por lo general no uso 'puts', porque en general, parte de mi salida necesita un formato y prefiero utilizar una función para todos los resultados. Tiene razón en que en este caso eso no se aplica, por lo que el único argumento en contra de 'puts' es que a veces explícito (linebreak) es mejor que implícito. Para el caso, podrías quitar el espacio en blanco también, aunque estoy bastante seguro de que eso no mejoraría las cosas ;-) –

Cuestiones relacionadas