Ich weiß also nicht, ob dies ein gutes oder ein schlechtes Code-Design ist, also dachte ich, ich frage besser.
Ich erstelle häufig Methoden für die Datenverarbeitung, die Klassen einbeziehen, und überprüfe die Methoden häufig sehr genau, um sicherzustellen, dass ich nicht vorher Nullreferenzen oder andere Fehler erhalte.
Für ein sehr einfaches Beispiel:
// 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);
}
Wie Sie sehen können, prüft ich jedes Mal auf Null. Aber sollte die Methode diese Prüfung nicht haben?
Sollte zum Beispiel externer Code die Daten vorher bereinigen, damit die Methoden nicht wie folgt validiert werden müssen:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
Zusammenfassend lässt sich festhalten, ob Methoden "Daten validieren" und dann ihre Verarbeitung für die Daten durchführen oder ob dies garantiert ist, bevor Sie die Methode aufrufen. Wenn Sie vor dem Aufrufen der Methode keine Validierung durchführen, sollte ein Fehler ausgegeben werden (oder der Fehler abgefangen werden Error)?