La refactorització és el procés de millorar el disseny del codi existent sense canviar-ne el comportament extern. Aquest procés és essencial per mantenir el codi net, comprensible i fàcil de mantenir. En aquesta secció, explorarem les tècniques de refactorització més comunes i com aplicar-les de manera efectiva.

Objectius de la Refactorització

  • Millorar la llegibilitat del codi: Facilitar la comprensió del codi per a altres desenvolupadors.
  • Reduir la complexitat: Simplificar el codi per fer-lo més fàcil de mantenir i modificar.
  • Eliminar la duplicació de codi: Consolidar codi repetit per evitar inconsistències.
  • Millorar el rendiment: Optimitzar el codi per millorar l'eficiència.

Tècniques Comunes de Refactorització

  1. Extract Method (Extreure Mètode)

  • Descripció: Crear un nou mètode a partir d'un fragment de codi dins d'un mètode existent.
  • Quan utilitzar-lo: Quan un mètode és massa llarg o fa més d'una cosa.
  • Exemple:
# Abans de la refactorització
def calcular_total(preus):
    total = 0
    for preu in preus:
        total += preu
    return total

# Després de la refactorització
def calcular_total(preus):
    return sum(preus)

  1. Inline Method (Mètode en Línia)

  • Descripció: Substituir un mètode per la seva implementació directa.
  • Quan utilitzar-lo: Quan un mètode és trivial i només es crida una vegada.
  • Exemple:
# Abans de la refactorització
def obtenir_nom_complet(nom, cognom):
    return f"{nom} {cognom}"

nom_complet = obtenir_nom_complet("Joan", "Pérez")

# Després de la refactorització
nom_complet = f"Joan Pérez"

  1. Rename Variable (Canviar Nom de Variable)

  • Descripció: Canviar el nom d'una variable per reflectir millor el seu propòsit.
  • Quan utilitzar-lo: Quan el nom d'una variable no és clar o és enganyós.
  • Exemple:
# Abans de la refactorització
x = 10  # Què representa 'x'?

# Després de la refactorització
nombre_de_productes = 10

  1. Replace Temp with Query (Substituir Temporal per Consulta)

  • Descripció: Substituir una variable temporal amb una funció que calcula el valor.
  • Quan utilitzar-lo: Quan una variable temporal s'utilitza només per emmagatzemar el resultat d'una expressió.
  • Exemple:
# Abans de la refactorització
def calcular_preu_final(preu_base, impost):
    preu_final = preu_base + (preu_base * impost)
    return preu_final

# Després de la refactorització
def calcular_preu_final(preu_base, impost):
    return preu_base + (preu_base * impost)

Exercicis Pràctics

Exercici 1: Refactoritzar un Mètode Llarg

Codi Original:

def processar_comanda(comanda):
    total = 0
    for article in comanda['articles']:
        total += article['preu'] * article['quantitat']
    if comanda['descompte']:
        total *= 0.9
    return total

Instruccions:

  1. Extreu el càlcul del total a un mètode separat.
  2. Extreu l'aplicació del descompte a un altre mètode.

Solució:

def calcular_total_articles(articles):
    total = 0
    for article in articles:
        total += article['preu'] * article['quantitat']
    return total

def aplicar_descompte(total, descompte):
    if descompte:
        return total * 0.9
    return total

def processar_comanda(comanda):
    total = calcular_total_articles(comanda['articles'])
    total = aplicar_descompte(total, comanda['descompte'])
    return total

Conclusió

La refactorització és una habilitat essencial per a qualsevol desenvolupador que vulgui mantenir un codi de qualitat. Mitjançant l'aplicació de tècniques de refactorització, podem millorar la llegibilitat, mantenibilitat i eficiència del nostre codi. Practicar aquestes tècniques regularment ajudarà a desenvolupar un codi més net i robust.

Qualitat del Programari i Millors Pràctiques

Mòdul 1: Introducció a la Qualitat del Programari

Mòdul 2: Fonaments de les Proves de Programari

Mòdul 3: Qualitat del Codi i Millors Pràctiques

Mòdul 4: Proves Automatitzades

Mòdul 5: Tècniques Avançades de Proves

Mòdul 6: Processos d'Assegurament de la Qualitat

Mòdul 7: Millors Pràctiques en el Desenvolupament de Programari

Mòdul 8: Estudis de Cas i Aplicacions del Món Real

© Copyright 2024. Tots els drets reservats