[Front-end] Duplicar não faz mal
Se tem uma coisa hoje que define o front-end moderno, é a componentização. Acabar com a duplicidade do código, criar páginas com recursos incríveis apenas encaixando componentes já prontos e claro ganhar velocidade na alteração do layout. Tem outros pontos positivos, mas já deu pra pegar a ideia. Mas até nesses três pontos citados, não são só flores.
Um princípio que resume tudo na vida, SRP. Quando criamos componentes precisamos ficar muito atentos ao seu nível de abstração, pois aqueles pontos positivos podem virar negativos rapidinho. Faz de conta que vamos criar uma página web para um ecommerce que vem crescendo rapidamente, você escolhe suas tecnologias e começa a seguir o design. O designer criou vários componentes bonitinhos e construiu todos os elementos, páginas e etc, ótimo.
Você, um cara sagaz, viu que de fato os itens foram replicados, logo você cria um componente para cada um e sai montando as páginas. Maravilhoso, job realizado, todos felizes, trabalho excelente, boa! Com o passar do tempo, a galera começa a pegar uns insights de melhoria do site. Eles viram aquela teoria das cores e decidiram mudar a cor do botão para adicionar um produto no carrinho para azul (porque transmite confiança) e a cor para fechar a compra do carrinho para vermelho (para excitar a fechar a compra). Simples, vamos fazer um bind da cor para que a página que renderiza aquele componente passe qual cor irá utilizar. Excelente, ótima sacada, o site ta ótimo.
Passando mais um tempo, percebe-se que ainda tem muitos carrinhos de compra sendo abandonados no site, então decidem aumentar o botão do carrinho e colocar uma tipografia diferente no botão de adicionar. Você vai lá e passa mais duas propriedades para seu botão, fonte e tamanho para deixar ele mais dinâmico. Mas pera aí, a gente até hoje tá deixando o botão habilitado quando o carrinho está vazio, vamos passar se ele precisa estar desabilitado ou não também. Querem colocar um efeito de hover diferente para algumas páginas também, mais uma propriedade, então começa formato, ícone, alinhamentos, margens e assim vai somando mais e mais propriedades para passar para o botão.