Actualmente estoy leyendo Code Complete donde McConnell recomienda encarecidamente que todas las variables sean privadas. Por casualidad, estaba trabajando en un proyecto en el que necesitaba cambiar una variable privada.variables privadas o protegidas?
La clase tenía una variable privada (a String
) diciéndole dónde cargar una imagen para utilizarla en el sistema chrome. Necesitaba cambiar esta imagen, no sé sobre otros idiomas, pero hasta donde sé en Flex/AIR, no hay forma de anular una variable privada.
Si hubiera sido declarado protegido, podría simplemente haber extendido la clase y anular esa variable. Pero como era privado, tuve que copiar todo el código de la clase y crear una clase duplicada con la única diferencia de esa cadena.
Creo que el argumento es utilizar privado, ya que hace que el acoplamiento entre las superclases y las subclases sea más flexible, sin embargo tuve que violar por completo DRY para poder lograr un cambio de cadena simple, lo cual me parece peor.
Esto me hace pensar que lo protegido es mejor que lo privado. Sin embargo, quiero hacer las cosas de la mejor manera correcta de prácticas. Entonces, si lo privado es mejor, quiero entender por qué.
Si el consenso general es que lo privado es mejor, ¿alguien puede explicar por qué?
Sí, exactamente. No toque la variable principal, anule el getter en su lugar. Mucho más encapsulado y menos propenso a errores. – mikek