Olá, pessoal
Estava tentando fazer um elo de entendimento entre os cursos Java e refatoração: melhorando códigos com boas práticas e Boas práticas de programação: melhore o código de uma API Java, quando surgiu uma dúvida: como um dado DTO implementado na API REST pode ser reaproveitado nos projetos consumidores?
No curso Java e refatoração: melhorando códigos com boas práticas foi exemplificado um projeto Adopet Console, que para funcionar consumia recursos implementados no api.jar, cujo projeto foi usado no segundo curso Boas práticas de programação: melhore o código de uma API Java.
Se pensarmos que, de um lado, no Adopet Console podemos ter o record PetDto para requisitar um cadastramento, e do outro, o Adopet API é a que realmente implementa o record PetDto para tratar as requisições.
Como resolveria essa situação, evitando redundancia de fontes?
Penso que não é conveniente ter record PetDto codificado em ambos projetos, isto é, a implementação abaixo é de longe uma má prática:
// Record em Adopet Console
package br.com.alura.adopet.console.dto;
...
public record PetDto (
@Enumerated(EnumType.STRING)
@NotNull
TipoPet tipo,
@NotBlank
String nome,
@NotBlank
String raca,
@NotNull
Integer idade,
@NotBlank
String cor,
@NotNull
Float peso) {}
// Record em Adopet Api
package br.com.alura.adopet.api.dto;
...
public record PetDto (
@Enumerated(EnumType.STRING)
@NotNull
TipoPet tipo,
@NotBlank
String nome,
@NotBlank
String raca,
@NotNull
Integer idade,
@NotBlank
String cor,
@NotNull
Float peso) {}