Revisando e refatorando código

Estudo de Caso: Construindo Software em Python

Mark Pedigo

Principal Data Scientist

Benefícios da revisão periódica de código

  • Melhor qualidade do código
    • Detectar inconsistências cedo
  • Compartilhamento de conhecimento
    • Colaboração
    • Alinhamento contínuo
  • Consistência e boas práticas
    • Padrões elevados

Duas pessoas revisando código em um computador

Estudo de Caso: Construindo Software em Python

Exemplo de code review

def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result

Dê feedback sobre:

  • Funcionalidade
  • Legibilidade
    • Exemplo - else desnecessário
  • Casos extremos
    • Exemplo - Números negativos em fatorial
Estudo de Caso: Construindo Software em Python

Benefícios da refatoração de código

  • Melhor qualidade do código
  • Manutenção mais fácil
  • Menos dívida técnica

Espaguete vira um fluxograma

Estudo de Caso: Construindo Software em Python

Exemplo de refatoração

# Original code
def factorial(n):
    if n == 0:
        return 1
    else:
        result = 1
        for i in range(1, n + 1):
            result *= i
        return result
# Refactored code
def factorial(n):
    if n < 0:
        raise ValueError("Not defined")

if n == 0: return 1
result = 1 for i in range(1, n + 1): result *= i return result
Estudo de Caso: Construindo Software em Python

Nova função para a nova fórmula

Fórmula anterior $$m = P \cdot \frac{r (1 + r)^N}{(1+r)^N - 1}$$ onde $m$ é o valor da parcela mensal, $P$ é o principal do empréstimo, $r$ é a taxa de juros mensal e $N$ é o número de parcelas

Nova fórmula $$P = m \cdot \frac{(1+r)^N - 1}{r (1 + r)^N}$$

Estudo de Caso: Construindo Software em Python

Roteiro

Roteiro mostrando o que já foi concluído no projeto e o que vamos iniciar

Estudo de Caso: Construindo Software em Python

Vamos praticar!

Estudo de Caso: Construindo Software em Python

Preparing Video For Download...