Revizuirea și refactorizarea codului

Studiu de caz: Construirea de software în Python

Mark Pedigo

Principal Data Scientist

Beneficiile revizuirii periodice a codului

  • Calitate îmbunătățită a codului
    • Detectarea timpurie a inconsistențelor
  • Schimb de cunoștințe
    • Colaborare
    • Aliniere continuă
  • Consecvență și bune practici
    • Standarde ridicate

Două persoane care revizuiesc cod pe un computer

Studiu de caz: Construirea de software în Python

Exemplu de revizuire a codului

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

Oferiți feedback privind:

  • Funcționalitate
  • Lizibilitate
    • Exemplu - else inutil
  • Cazuri limită
    • Exemplu - Numere negative pentru factorial
Studiu de caz: Construirea de software în Python

Beneficiile refactorizării codului

  • Calitate îmbunătățită a codului
  • Întreținere mai ușoară
  • Reducerea datoriei tehnice

Spaghetti codul este transformat într-o diagramă flux

Studiu de caz: Construirea de software în Python

Exemplu de refactorizare

# 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
Studiu de caz: Construirea de software în Python

Funcție nouă pentru o formulă nouă

Formula anterioară $$m = P \cdot \frac{r (1 + r)^N}{(1+r)^N - 1}$$ unde $m$ este rata lunară, $P$ este suma împrumutului, $r$ este rata lunară a dobânzii, iar $N$ este numărul de rate lunare

Formula nouă $$P = m \cdot \frac{(1+r)^N - 1}{r (1 + r)^N}$$

Studiu de caz: Construirea de software în Python

Foaie de parcurs

Foaie de parcurs cu părțile finalizate și cele ce urmează a fi începute

Studiu de caz: Construirea de software în Python

Să exersăm!

Studiu de caz: Construirea de software în Python

Preparing Video For Download...