Tudo bem expor o estado de um objeto imutável?

Tendo me deparado com o conceito de objetos imutáveis recentemente, gostaria de conhecer as melhores práticas para controlar o acesso ao estado. Mesmo que a parte orientada a objetos do meu cérebro me faça querer me encolher de medo ao ver os membros do público, não vejo problemas técnicos com algo assim:

public class Foo {
    public final int x;
    public final int y;

    public Foo( int x, int y) {
        this.x = x;
        this.y = y;
    }
}

Eu me sentiria mais confortável declarando os campos comoprivate e fornecendo métodos getter para cada um, mas isso parece excessivamente complexo quando o estado é explicitamente somente leitura.

Qual é a melhor prática para fornecer acesso ao estado de um objeto imutável?

questionAnswers(13)

yourAnswerToTheQuestion