Quindi non so se questa è una buona o cattiva progettazione del codice, quindi ho pensato che fosse meglio chiedere.
Spesso creo metodi che eseguono l'elaborazione dei dati che coinvolgono le classi e spesso eseguo molti controlli nei metodi per assicurarmi di non ottenere riferimenti null o altri errori prima della mano.
Per un esempio di base:
// fields and properties
private Entity _someEntity;
public Entity SomeEntity => _someEntity;
public void AssignEntity(Entity entity){
_someEntity = entity;
}
public void SetName(string name)
{
if (_someEntity == null) return; //check to avoid null ref
_someEntity.Name = name;
label.SetText(_someEntity.Name);
}
Quindi come puoi vedere im controllo per null ogni volta. Ma il metodo non dovrebbe avere questo controllo?
Ad esempio, il codice esterno dovrebbe pulire i dati prima della mano, quindi i metodi non devono essere convalidati come di seguito:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
In sintesi, i metodi dovrebbero essere "validazione dei dati" e quindi eseguire il loro trattamento sui dati, o dovrebbero essere garantiti prima di chiamare il metodo, e se non si riesce a convalidare prima di chiamare il metodo, si dovrebbe generare un errore ( o prendere l'errore)?