두 개의 readonly int
필드 가있는 수업이 있습니다. 그들은 속성으로 노출됩니다 :
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 { } }
}
그러나 이는 다음이 완벽하게 유효한 코드임을 의미합니다.
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
작동 한다고 가정했을 때 발생 하는 버그 는 확실하지 않습니다. 물론 잘못된 개발자가 문서를 읽었을 것입니다. 그러나 컴파일 또는 런타임 오류가 문제에 대해 경고하지 않았다는 사실은 바뀌지 않습니다.
Thing
개발자가 위의 실수를 저 지르지 않도록 클래스를 어떻게 변경 해야 합니까?
예외를 던져? 속성 대신 getter 메서드를 사용 하시겠습니까?
Interfaces
. 그것이 내가하고있는 일인지 잘 모르겠습니다.