Teniendo en cuenta la encapsulación de objetos, ¿deberían los operadores devolver una propiedad inmutable?
Cuando un captador devuelve una propiedad, como devolver unList
de otros objetos relacionados, ¿deberían esa lista y sus objetos ser inmutables para evitar el código fuera de la clase, cambiando el estado de esos objetos, sin que lo sepa el objeto principal?
Por ejemplo si unContact
objeto, tiene ungetDetails
getter, que devuelve unList
deContactDetails
objetos, entonces cualquier código que llame a ese getter:
ContactDetail
objetos de esa lista sin elContact
Objeto de saberlo.puede cambiar cadaContactDetail
objeto sin elContact
Objeto de saberlo.Entonces, ¿qué debemos hacer aquí? ¿Deberíamos simplemente confiar en el código de llamada y devolver objetos fácilmente mutables, o ir por el camino difícil y hacer una clase inmutable para cada clase mutable?