Como arquitetar informações de front e back juntas de uma maneira eficiente.
Bom dia/tarde/noite.
Me chamo Marcelo e sou um desenvolvedor focado principalmente na parte web e sou um pouco preocupado demais com arquitetura.
Atualmente estou desenvolvendo um sistema para uma empresa e estou a um tempo me corroendo com uma questão.
Basicamente, a sincronização dos "dados" entre front e back-end.
Imagine a seguinte situação, você tem uma tabela de Pessoas
, e nessa tabela, você tem uma coluna de situação
que é do tipo int4
.
1 - Solteiro
2 - Casado
3 - Viuvo
4 - Etc.
E digamos que no front end você queira associar uma cor de texto para cada um dos valores.
Atualmente, eu trago do back-end a situação
da pessoa como um número, crio uma constante no front como por exemplo:
[
{
value: 1,
label: "Solteiro",
color: "green"
},
{
value: 2,
label: "Casado",
color: "purple"
},
{
value: 3,
label: "Viuvo",
color: "red"
},
...
]
E assim por diante, porém, isso tem alguns problemas, como por exemplo, se surgir uma nova opção, eu precisaria adicionar isso a essa constante no front, não que seja o fim do mundo, mas não sei se seria a melhor das práticas.
Mas o problema mesmo é caso surja um nova opção dentre essas, digamos por exemplo, que agora o valor 2 será de Divorciado
, e Casado
será 3, Viuvo será 4, e assim por diante.
Esse tipo de coisa acontece bastante no desenvolvimento de sistemas dedicados a empresa, pois, acabamos tratando de situações e condições muito especificas.
Queria saber se alguém tem alguma ideia ou abordagem melhor para solucionar isso.
Já pensei inicialmente em definir isso como uma rota do backend, no qual, o fronted teria que apenas mandar um request e receberia essa constante, tirando assim, essa lógica do frontend, porém, o backend não tem e não deveria ter que ter conhecimento de estilizações do frontend, o exemplo acima das cores é realmente só um exemplo, pois na prática é um pouco mais complexo que isso!
Espero ter conseguido esclarecer o "problema", não é uma dor de cabeça enorme nem nada do tipo, mas acho que em uma questão de arquitetura, deva ter alguma alternativa um pouco melhor.