Portanto, não sei se esse é um design de código bom ou ruim, por isso acho melhor perguntar.
Costumo criar métodos que processam dados envolvendo classes e, muitas vezes, faço muitas verificações nos métodos para garantir que não receba referências nulas ou outros erros antes.
Para um exemplo muito básico:
// 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);
}
Então, como você pode ver, estou verificando se há nulo sempre. Mas o método não deve ter essa verificação?
Por exemplo, o código externo deve limpar os dados com antecedência, para que os métodos não precisem ser validados como abaixo:
if(entity != null) // this makes the null checks redundant in the methods
{
Manager.AssignEntity(entity);
Manager.SetName("Test");
}
Em resumo, os métodos devem ser "validadores de dados" e, em seguida, processam os dados, ou devem ser garantidos antes de chamá-lo, e se você não validar antes de chamar o método, deve ocorrer um erro (ou capturar o erro)?