Closed TorMenezes closed 1 year ago
Code Smell: Dispensable Indentificamos que no método responsável pela funcionalidade do botão "tela cheia" verificava o estado atual duas vezes, se estava ou não em tela cheia. Essa dupla verificação não era necessária para o funcionamento do botão. Em nosso caso, o custo por esse code smell não era perceptível, mas se essa má prática se repetisse em larga escala poderiamos ter um custo de tempo relevante pelo acumulo de verificações condicionais.
Refatoração: Extract Method
Commits: e1ce478; d4ec71c Code Smell: Dead Code
Ao refatorar o código anterior inicial da feature Quiz, boa parte de sua lógica de funcionamento como: checagem de acerto, exibição de ícone de acerto/erro; foi passada para o front, especificamente para o módulo: "quiz.js", a fim de tornar sua execução mais rápida (evitando várias solicitações ao back em busca do repertório de perguntas 'perguntas.json') e de atribuir a responsabilidade da exibição do Quiz ao front do usuário, e não ao back-end da aplicação. Portanto, o módulo "quiz_funcoes.py" acabou deixando de ser utilizado, tornando-se um código morto; porém, na correria do desenvolvimento, acabou-se esquecendo de deletá-lo do repositório de código, criando-se um Smell Code: Dead Code.
Refatoração: Exclusão do código morto
Commit: b483d12 Code Smell: Dead Code
Ao refatorar o código da feature Quiz, uma função chamada answer_quiz
deixou de ser utilizada, e portanto de ser relevante. Porém, foi apenas comentada ao invés de ser excluída. Dessa forma, nesse commit, foi excluído esta função comentada.
Além disso, o request.method==POST
da função generate_quiz
realizava uma chamada de função de escolher_perguntas
, porém durante a refatoração, essa chamada deixou de ser utilizada, e também foi comentada.
Dessa forma, após a remoção dessas linhas de código, o programa continuou funcionando normalmente.
Refatoração: Exclusão do código morto
commit 5ba55f6
Code Smell: Long Method Foi identificado que o método responsável pela rota /responder tinha um potencial muito grande de precisar de refatoração no futuro, pois ele concentrava as funções responsáveis pela execução do chatGPT. Caso no futuro, seja necessário otimizar o chatgpt, com uma funcionalidade de buffer, por exemplo, que guardaria os resultados passados de forma a permitir uma conversação contínua, seria necessário introduzir inúmeras linhas de códigos a um mesmo método. Por isso, as funções foram delegadas a uma classe responsável por esses comportamentos.
Refatoração: Extract Class