Vai acontecer com todos. Mas o problema mais grave que ocorreu nos últimos 2/3 anos é a IA, especialmente o resumi de IA que o Google sempre te manda. E isso está tornando as pessoas preguiçosas e pegando um conteúdo razoável, mas raso e que não incentiva você procurar pelo melhor ou até ruim ou errado que vai deturpando a cabeça das pessoas cada vez mais, além de mexer com o funcionamento do cérebro para procurar o caminho mais curto que não te desafia em ter um raciocínio melhor, ou até mesmo ter um conhecimento mais sólido.
Tenho visto MUITO conteúdo de arquitetura .NET. Já é copnsenso no mercado usar o repository pattern da forma mais preguiçosa possível.
Pedi pra IA fazer uma autenticação e ele criou a seguinte query:
// No infrstrucure:
public async Task<User> GetUser(Guid userId){
return await dbContext.Users
.Include(u => u.Organization)
.FirstAsync(u => i.Id == userId)
}
// No application:
public async Task<UserInfoDTO> GetUserInfo(Guid userId){
var user = await userRepository.GetUser(userId)
return new UserInfoDTO {
userId = user.Id,
userName = user.Name,
organizationId = user.Organization.Id,
organizationName = user.Organization.Name
}
}
Esse código:
- Segue Clean Arquitecture
- Segue as práticas recomendadas do mercado
- Retorna o usuário inteiro e a organização inteira para a aplicação (quase 50 campos ... pra usar 4)
- Cria 2 state machines gerando overhead em hot paths (2 interrupções e resumo das threads)
Minha atualização:
// No infrstrucure:
public Iqueryable<User> GetUserQuery(Guid userId){
return dbContext.Users
.Where(u => i.Id == userId)
}
// No application:
public Task<UserInfoDTO> GetUserInfo(Guid userId){
var query = userRepository.GetUserQuery(userId)
return query.Select(u => new UserInfoDTO{
userId = user.Id,
userName = user.Name,
organizationId = user.Organization.Id,
organizationName = user.Organization.Name
}).FirstAsync()
}
Esse código:
- Retorna somente os campos necessários
- Não cria nenhum overhead de troca de contexto (ele não tem await, só retorna pro pai executar)
- Não Segue Clean Arquitecture
- Não Segue as práticas recomendadas do mercado
- Falha em code reviews
- Ninguem sabe dar manutenção direto porque a galera não entende o que é async/await por baixo dos panos
Imagina isso a nível de todas as querys do sistema? pode trazer um ganho de 60 ~ 80% na performance da aplicação.
Ninguém nunca me ensinou isso. Eu que tive que procurar como funcionava por baixo dos panos!
Eu vou criar uma plataforma nova também.
Se quiser ajuda por favor me chame! https://pilati.dev