Skip to content

Iuri Refatorações Solid e Clean Code

Iuri Severo edited this page Apr 20, 2021 · 10 revisions

Refatorações Solid e Clean Code

Metodologia

Para definição de quais códigos do Rasa seriam refatorados foi utilizado o CodeClimate, ferramenta de análise de qualidade de código. A análise foi feita em cima do fork FGA-GCES/rasa, que estava atualizado no momento que os dados foram levantados, e apresentou o seguinte resultado:

Análise FGA-GCES/rasa

A partir dos mau cheiros detectados, foram selecionados dois arquivos: o rasa/tests/nlu/featurizers/test_featurizer_py e o rasa/nlu/extractors/extractor_py. As análises desses arquivos podem ser baixados nos seguintes links:

A principal refatoração realizada no Test Featurizer será para redução da repetição de código e, como consequência, a redução do tamanho total da função. Já o Extractor terá uma refatoração mais complexa, uma vez que a maioria dos mau cheiros detectados são relacionados a complexidade cognitiva e a complexidade lógica.

Resultados

Para garantia da efetividade das alterações foi feita uma análise do resultado dos testes unitários dos arquivos refatorados. Essa análise pode ser vista nos arquivos Testes test_featurizer.py e Testes extractor.py.

Após a refatoração a análise do CodeClimate apresentou os seguintes resultados (links para download):

Test Featurizer

Das cinco issues listadas apenas duas não foram resolvidas, o que aumentou o rating do documento de B para A.

A duas issues que não foram resolvidas são referentes aos parâmetros passados para função test_calculate_cls_vector. Não foi encontrada uma solução que removesse a duplicação de código e mantivesse a fácil leitura do código. Todas tentativas resultaram em um código menos legível e, devido a isso, foi decidido que não seriam feitas alterações nessa parte.

Extractor

Das cinco issues listadas apenas uma não foi resolvida, o que aumentou o rating do documento de B para A.

A issue não resolvida é referente a função convert_predictions_into_entities e se demonstrou muito complexa conforme analisada. Apesar de algumas alterações terem sido realizadas, elas não foram suficientes para diminuir sua complexidade cognitiva de 20 para 05.

Clone this wiki locally