J'ai une classe avec deux readonly int
champs. Ils sont exposés en tant que propriétés:
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 { } }
}
Cependant, cela signifie que le code suivant est parfaitement légal:
Thing iThoughtThisWasMutable = new Thing(1, 42);
iThoughtThisWasMutable.Foo = 99; // <-- Poor, mistaken developer.
// He surely has bugs now. :-(
Les bogues qui découlent de l' hypothèse que cela fonctionnerait seront certainement insidieux. Bien sûr, le développeur erroné aurait dû lire les documents. Mais cela ne change pas le fait qu'aucune erreur de compilation ou d'exécution ne l'a averti du problème.
Comment Thing
changer la classe pour que les développeurs soient moins susceptibles de faire l'erreur ci-dessus?
Jetez une exception? Utilisez une méthode getter au lieu d'une propriété?
Interfaces
. Je ne suis pas sûr que c'est ce que je fais.