1
resposta

Minha refatoração

segue meu código refatorado

const html = document.querySelector('html');
const focoBt = document.querySelector('.app__card-button--foco');
const curtoBt = document.querySelector('.app__card-button--curto');
const longoBt = document.querySelector('.app__card-button--longo');
const banner = document.querySelector('.app__image');
// Array de botões para iteração
const botoes = [focoBt, curtoBt, longoBt];

// Mapeamento dinâmico: lê do HTML e mapeia para o contexto correto
const contextoMap = {
    [focoBt.dataset.contexto]: 'foco',
    [curtoBt.dataset.contexto]: 'descanso-curto',
    [longoBt.dataset.contexto]: 'descanso-longo'
};

// Event listener único aplicado a todos os botões
botoes.forEach(botao => {
    botao.addEventListener('click', (event) => {
        const dataContexto = event.currentTarget.dataset.contexto;
        const contexto = contextoMap[dataContexto];
        
        if (contexto) {
            alteraContexto(contexto);
        }
    });
});

function alteraContexto(contexto) {
    html.setAttribute('data-contexto', contexto);
    banner.setAttribute('src', `./imagens/${contexto}.png`);
}
1 resposta

Oii, Bruno! Tudo bem?

Você aplicou conceitos de iteração e mapeamento de dados, o que demonstra que está explorando as possibilidades do JavaScript para além do básico.

A sua lógica de utilizar um forEach para percorrer os botões e um objeto contextoMap para traduzir os valores do dataset é um ótimo exercício de pensamento analítico. E o uso do forEach ajuda a evitar a repetição manual de addEventListener para cada botão, o que deixa o código visualmente mais limpo em relação à estrutura repetitiva.

Continue praticando essa busca por códigos menos repetitivos. Essa mentalidade de buscar padrões é o que diferencia quem domina a linguagem.

Alura Conte com o apoio da comunidade Alura na sua jornada. Abraços e bons estudos!