Skip to content

Conversation

@Gabriel-Enrico
Copy link

Refatoração: Melhorar qualidade de código em export_model.py e save_load.py

Contexto

Enquanto estudava o código do PaddleOCR, notei que alguns módulos utilitários tinham oportunidades de melhoria. Decidi fazer uma análise estática usando Pylint e Radon para identificar os principais problemas.

O que foi feito

export_model.py

A função dynamic_to_static() estava muito complexa com muitas condições aninhadas. Consegui simplificar bastante:

  • Extraí a lógica de formas dinâmicas em _get_common_dynamic_shapes()
  • Isolei a configuração de pós-processamento em _build_postprocess_config()
  • Criei um mapeamento centralizado em _get_input_spec_map() para evitar o grande if/elif

Também melhorei a documentação e modernizei o código para usar f-strings.

save_load.py

Notei que as funções load_model() e load_pretrained_params() tinham praticamente o mesmo código de carregamento de parâmetros. Extraí isso em _load_and_set_params() para evitar duplicação.

Também organizei melhor a lógica de salvamento separando em _save_nlp_model() e _save_generic_model().

Resultados da Refatoração

Métrica Antes Depois Melhoria
Complexidade Ciclomática Grau E Grau B ↓ 74%
Duplicação de Código ~40% ~0% ↓ 100%
Problemas Pylint 574 379 ↓ 34%

Notas Importantes

  • Nenhuma mudança no comportamento externo do código
  • Todos os testes de sintaxe passaram
  • O código agora está mais fácil de entender e manter

@paddle-bot
Copy link

paddle-bot bot commented Oct 22, 2025

Thanks for your contribution!

@CLAassistant
Copy link

CLAassistant commented Oct 22, 2025

CLA assistant check
All committers have signed the CLA.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants