-
Notifications
You must be signed in to change notification settings - Fork 0
Iuri Refatorações Solid e Clean Code
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:
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:
- Test Featurizer
- Extractor
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.
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):
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.
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.