2010-11-08 15 views
5

Eclipse tiene una configuración de compilador java llamada "declaración de campo oculta otro campo o variable" que se puede configurar como advertencia/error.El uso de la advertencia de eclipse "declaración de campo oculta otro campo o variable"?

¿Cuán importante es esta advertencia en su opinión?

¿Cuál es una buena manera estándar para manejar este problema?

Código ejemplo de que esto sucede:

public class Test { 
    private String caption = null; 

    public Test(String caption) { // here 
    this.caption = caption; 
    } 
} 

que he visto soluciones en las que el campo se cambia el nombre, es decir, "fCaption", pero eso haría que los captadores automáticos/set que se pueden genereated que tienen impar nombres (getfCaption()). No es ilegible, pero fea ...

Editar: Oh sí, existe la posibilidad de cambiar el nombre de la firma del método Test(String caption_) o algo similar, pero que terminaría en el javadoc de aspecto extraño.

+0

La mina no se queja en absoluto .... –

Respuesta

6

Esta es una opción muy útil en mi opinión y debería estar habilitada para mostrar una advertencia del compilador. Existe una opción (en mi versión, al menos, Eclipse 3.5.2, característica de Java EE 1.2.2) para habilitarla/deshabilitarla aún más en los constructores y getters/setters para evitar falsos positivos.

eclipse compiler settings

+0

Acordado, el sombreado de nombres puede causar errores sutiles, especialmente si no usa la palabra clave this para prefijar cualquier variable de clase. Sin embargo, parece tonto para los constructores y setters/getters –

+0

Sin embargo: No hacer shadowing de nombre puede causar errores sutiles también. Justo al revés, como tener un método que acceda a un campo en lugar de su parámetro, si las personas aplican convenciones de que los parámetros tienen un sufijo _p, pero luego lo olvidan en su implementación. – zedoo

1

Yo diría que acaba de deshabilitar esta advertencia, parece no ser útil en su convención. Y no es de extrañar que se ignore por defecto.

+0

Es una configuración que está deshabilitada por defecto en eclipse. En las preferencias, Java - compilador - errores/advertencias, en "sombreado de nombres y conflictos" – Fredrik

0

guardo éstos ponen a "error". Si una clase y su padre tienen un campo con el mismo nombre, no quiero perder tiempo tratando de descubrir por qué parece que le estoy asignando un valor al campo, pero parece que nunca cambiará.

Cuestiones relacionadas