Como engenheiros, devemos sempre nos esforçar para escrever código simples.
Uma armadilha comum, típica de muitas linguagens de programação, e não apenas do Python, é o horrível uso incorreto do if-elif .
Se você quiser resolver esse problema e melhorar a legibilidade e a manutenção do seu código, continue lendo, este artigo é para você!
Caso de uso do manipulador de solicitação
Um sistema de gerenciamento de clientes recebe solicitações.
Cada solicitação contém uma ação e um nome de cliente. Ações consistem em criar um novo cliente, ativar um cliente, suspender um cliente e excluir um cliente.
Existem quatro tipos, e cada tipo é tratado de forma diferente.
Cada solicitação é um dicionário Python:
Aqui está um diagrama de fluxo potencial que aborda esse caso de uso:
E o código Python equivalente:
Você consegue identificar o problema? Existem muitos if e elifs
que tornam o código mais complexo , menos legível (muito longo!) e mais difícil de manter.
Além disso, para manipular as ações, o código às vezes precisa passar por vários "ses" que não correspondem, o que não é o ideal, pois o número de ações aumenta (complexidade de O(n), onde n é o número de ações).
Felizmente, existe uma solução simples!
Diga não ao If-elif!
Como você pode ver no código abaixo, a seção if-elif foi removida em favor de um dicionário que mapeia cada ação para a função manipuladora correspondente — linha 3, ACTION_MAPPING .
Agora, qualquer manipulador de ação é selecionado imediatamente na linha 18 do dicionário (na ordem média de O(1) ), e o manipulador é chamado na linha 20.
Por exemplo, para uma ação ' ativar ', o _handle_activate_request será selecionado.
Nota lateral: como a entrada é validada na linha 13, a ação sempre é encontrada no dicionário ACTION_MAPPING .
Qual é a melhor prática?
If-elif não é maligno; eles são uma parte essencial da linguagem.
No entanto, como em tudo na vida, você não deve exagerar.
Minha regra de ouro é que um if-elif é o suficiente. Se precisar de mais, use o mecanismo de mapeamento de dicionário.
E, por último, use uma ferramenta de scanner de complexidade de código como Radon / Xenon . Elas podem apontar áreas problemáticas e ajudar você a refatorar seu código em uma obra-prima.
Comments