Diciamo che ho una classe come questa:
public class MyClass
{
public string A { get; }
public string B { get; }
public string C { get; }
public MyClass(string a, string b, string c)
{
this.A = a ?? throw new ArgumentNullException(nameof(a));
this.B = b ?? throw new ArgumentNullException(nameof(b));
this.C = c ?? throw new ArgumentNullException(nameof(c));
}
}
e alcuni metodi da qualche parte usando un'istanza di esso:
public void DoMagic(MyClass myClass)
{
if(myClass == null) throw new ArgumentNullException(nameof(myClass));
// do stuff using myClass.A, myClass.B, myClass.C
}
A questo punto, sappiamo per certo che nel corpo del metodo, né myClass né alcuna delle sue proprietà possono essere nulli, e quindi possiamo usarli in modo sicuro.
Ma questo si interromperà se in qualsiasi momento la specifica per la classe cambia e all'improvviso una sua proprietà diventa facoltativa.
Che cosa si deve fare in questo caso? Devo fare affidamento sulle proprietà che vengono convalidate all'interno della classe, o dovrei mettere le clausole di protezione per A, B e C in tutti i metodi inide che le usano? Questo non gonfiarebbe troppo il codice?
Esiste una strategia generale raccomandata in questo caso? O più a seconda di alcune variazioni di contesto?