Cenário: a função com três parâmetros booleanos
Pergunta
Você encontra `gerarRelatorio(dados, true, false, true)`. O que há de errado com parâmetros booleanos assim e como você melhora?
Resposta esperada
Problemas: o call site é ilegível (o que é `true, false, true`?), é fácil trocar a ordem sem o compilador reclamar, e cada booleano quase sempre significa que a função tem dois comportamentos — três booleanos, até oito. Melhorias, da mais leve à mais estrutural: (1) um objeto de opções nomeadas (`{ incluirGraficos: true, comprimir: false, enviarEmail: true }`) — resolve legibilidade e ordem; (2) se os flags disparam caminhos bem diferentes, quebrar em funções com nome próprio (`gerarRelatorioComGraficos`, `gerarRelatorioResumido`); (3) se representam um modo, um enum/união de tipos em vez de vários bool. O objetivo é que a chamada se leia como uma frase e estados inválidos fiquem difíceis de expressar.
Por que perguntam isso
Cenário pleno. Boa resposta oferece um espectro de soluções (options object → split → enum) em vez de só 'usa um objeto'.