Eu tenho uma classe com dois readonly int
campos. Eles são expostos como propriedades:
public class Thing
{
private readonly int _foo, _bar;
/// <summary> I AM IMMUTABLE. </summary>
public Thing(int foo, int bar)
{
_foo = foo;
_bar = bar;
}
public int Foo { get { return _foo; } set { } }
public int Bar { get { return _bar; } set { } }
}
No entanto, isso significa que o seguinte é um código perfeitamente legal:
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
Os erros que advêm da suposição de que funcionariam certamente serão insidiosos. Claro, o desenvolvedor errado deve ter lido os documentos. Mas isso não muda o fato de que nenhum erro de compilação ou tempo de execução o alertou sobre o problema.
Como a Thing
classe deve ser alterada para que os desenvolvedores tenham menos probabilidade de cometer o erro acima?
Lançar uma exceção? Use um método getter em vez de uma propriedade?
Interfaces
. Não tenho certeza se é isso que estou fazendo.