Geral
Gerência e Qualidade de Software
Semana 5
0

Questão

Durante uma sprint de correção e melhoria em um sistema de controle de estoque, um desenvolvedor se depara com o seguinte trecho de código legado:
A imagem apresenta um trecho de código em linguagem Java, com uma estrutura condicional simples. A função se chama p e não recebe parâmetros. Dentro dela, há uma instrução if que verifica se a variável x é igual a 1. Se essa condição for verdadeira, a função y é executada. Caso contrário, ou seja, se x for diferente de 1, a função z é chamada. O código representa uma decisão entre dois caminhos possíveis com base no valor da variável x. 

Figura: Trecho em python da função p().
Fonte: Autor
O código funciona corretamente, mas o programador decide refatorá-lo da seguinte forma:
 A imagem mostra um trecho de código Java com o nome da função processarPedido, que não recebe parâmetros. Dentro da função, há uma estrutura condicional if que verifica se a variável tipoPedido é igual a PEDIDO_NORMAL. Se a condição for verdadeira, a função gerarNotaFiscal é chamada. Caso contrário, a função notificarErroProcesssamento é executada. O código representa uma lógica de controle em que o processamento do pedido depende do tipo identificado.
Figura: Trecho em python da função processarPedido(). 
Fonte: Autor
O time questiona se a mudança foi necessária, considerando que o código anterior já estava “funcionando”. O desenvolvedor justifica que a nova versão é mais clara para qualquer pessoa que leia o código posteriormente.
Com relação a este contexto e sobre o conteúdo estudado, analise as asserções a seguir e a relação proposta entre elas:
I. A clareza e a legibilidade do código são prioridades no desenvolvimento de software, mesmo que ele já esteja funcional, pois reduzem erros e facilitam a manutenção futura.
PORQUE
II. Refatorar um método para renomear variáveis ou funções que já funcionam pode ser dispensável, já que o funcionamento lógico do sistema não se altera com isso.
Assinale a alternativa correta:












A)

A asserção I é uma proposição verdadeira, e a II é uma proposição falsa.

B)

As asserções I e II são proposições verdadeiras, mas a II não é uma justificativa da I.

C)

A asserção I é uma proposição falsa, e a II é uma proposição verdadeira.

D)

As asserções I e II são falsas.

E)

As asserções I e II são proposições verdadeiras, e a II é uma justificativa da I.

function vote(questaoId, value) { window.location.href = "/accounts/login/?next=/questao/1528/"; return; fetch(`/vote/questao/${questaoId}/`, { method: 'POST', headers: { 'Content-Type': 'application/json', 'X-CSRFToken': 'Vg352sk2bhAdqvbr9E7Z7P7aPm19lNYQjtHhrC2Yl4g39IXA7Xv5aTOHP4G4cBMc' }, body: JSON.stringify({ value: value }) }) .then(response => response.json()) .then(data => { if (data.success) { document.getElementById(`score-${questaoId}`).textContent = data.score; const upBtn = document.querySelector(`button[onclick="vote(${questaoId}, 1)"]`); const downBtn = document.querySelector(`button[onclick="vote(${questaoId}, -1)"]`); upBtn.classList.remove('active-up'); downBtn.classList.remove('active-down'); if (data.user_vote === 1) upBtn.classList.add('active-up'); if (data.user_vote === -1) downBtn.classList.add('active-down'); } }); }