No passado, eu normalmente fazia a maior parte da minha manipulação de um objeto no método principal que está sendo criado / atualizado, mas me peguei adotando uma abordagem diferente recentemente e estou curioso para saber se é uma prática ruim.
Aqui está um exemplo. Digamos que eu tenha um repositório que aceite uma User
entidade, mas antes de inseri-la, chamamos alguns métodos para garantir que todos os seus campos estejam configurados para o que queremos. Agora, em vez de chamar métodos e definir os valores dos campos no método Insert, chamo uma série de métodos de preparação que modelam o objeto antes de sua inserção.
Método antigo:
public void InsertUser(User user) {
user.Username = GenerateUsername(user);
user.Password = GeneratePassword(user);
context.Users.Add(user);
}
Novos métodos:
public void InsertUser(User user) {
SetUsername(user);
SetPassword(user);
context.Users.Add(user);
}
private void SetUsername(User user) {
var username = "random business logic";
user.Username = username;
}
private void SetPassword(User user) {
var password = "more business logic";
user.Password = password;
}
Basicamente, a prática de definir o valor de uma propriedade de outro método é uma prática ruim?
user
passado por referência, o código poderia arrancá-lo das mãos do chamador e substituí-lo simplesmente dizendo, digamos user = null;
,.