Das três soluções acima, qual delas melhor adere às boas práticas e princípios de programação?
Questão
Das três soluções acima, qual delas melhor adere às boas práticas e princípios de programação?
Solução A:
função inverter_palavra(string palavra) invertido = "" para letra em palavra: invertido = letra + invertido retornar invertido
função verificar_todos_palíndromos(array arr) se arr[0] == inverter_palavra(arr[0]) se arr[1] == inverter_palavra(arr[1]) se arr[2] == inverter_palavra(arr[2]) retornar verdadeiro retornar falso
Solução B:
função inverter_palavra(string palavra) invertido = "" para letra em palavra: invertido = letra + invertido retornar invertido
função é_palíndromo(string palavra) retornar palavra == inverter_palavra(palavra)
função verificar_todos_palíndromos(array arr) para palavra em arr: se é_palíndromo(palavra) == falso retornar falso retornar verdadeiro
Solução C:
função inverter_palavra(string palavra) invertido = "" para letra em palavra: invertido = letra + invertido retornar invertido
função verificar_todos_palíndromos(array arr) invertido1 = inverter_palavra(palavra1) invertido2 = inverter_palavra(palavra2) invertido3 = inverter_palavra(palavra3)
se arr[0] não for igual a invertido1:
retornar falso
se arr[1] não for igual a invertido2:
retornar falso
se arr[2] não for igual a invertido3:
retornar falso
retornar verdadeiro
Resposta
97%Solução B
Explicação
Vamos comparar as três soluções sob boas práticas (legibilidade, reuso, manutenção, generalização e correção).
Solução A
- Verifica apenas três posições fixas do array (arr[0], arr[1], arr[2]).
- Usa if aninhado ("piramidado"), o que piora legibilidade e manutenção.
- Se o array tiver tamanho diferente de 3, a lógica não escala (ou pode até falhar).
Solução C
- Também está presa a três elementos.
- Além disso, há um problema de correção/clareza: calcula
invertido1 = inverter_palavra(palavra1)etc., mas palavra1/palavra2/palavra3 não são definidos na função; o correto seria usar os elementos do array (ex.:arr[0],arr[1],arr[2]). - Repete código desnecessariamente (três inversões e três blocos de comparação quase iguais).
Solução B
- Extrai a regra em uma função
é_palíndromo(palavra), seguindo responsabilidade única e melhorando o reuso. - Usa um laço para percorrer o array, funcionando para qualquer tamanho de entrada.
- Aplica early return (retorna falso assim que encontra uma palavra que não é palíndromo), deixando o fluxo mais simples e eficiente.
- É a mais legível e fácil de manter/estender.
Portanto, a que melhor adere a boas práticas e princípios de programação é a Solução B.
Alternativa correta: (B).