Sobes.tech
Junior

Cos'è il principio DRY e quali aspetti include?

sobes.tech AI

Risposta dell'AI

Il principio DRY (Don't Repeat Yourself) significa non ripetersi. È un principio fondamentale dello sviluppo software volto a ridurre la ridondanza di codice e dati. Seguire questo principio migliora la manutenibilità, la leggibilità e riduce la probabilità di errori.

Aspetti del principio DRY:

  • Evitare la duplicazione del codice: I blocchi di codice ripetuti vengono spostati in funzioni, classi, moduli.
    # Cattivo:
    def process_user_data(user):
        print(f"Elaborazione dati per l'utente: {user['name']}")
        # Molti passaggi di elaborazione
        print("Elaborazione dati terminata.")
    
    def process_order_data(order):
        print(f"Elaborazione dati per l'ordine: {order['id']}")
        # Molti passaggi di elaborazione (simili ai dati utente)
        print("Elaborazione dati terminata.")
    
    # Buono:
    def process_data(item_type, item_id):
        print(f"Elaborazione dati per {item_type}: {item_id}")
        # Passaggi di elaborazione condivisi
        print("Elaborazione dati terminata.")
    
    process_data("user", user['name'])
    process_data("order", order['id'])
    
  • Evitare la duplicazione dei dati: La stessa informazione viene memorizzata in un unico luogo (ad esempio, parametri di configurazione, costanti).
    // Cattivo:
    {
      "api_url_users": "https://api.example.com/users",
      "api_url_orders": "https://api.example.com/orders"
    }
    
    // Buono:
    {
      "base_api_url": "https://api.example.com",
      "endpoints": {
        "users": "/users",
        "orders": "/orders"
      }
    }
    
  • Evitare la duplicazione della logica di business: Le regole e gli algoritmi vengono implementati una sola volta.
    // Cattivo:
    // Validazione in più punti
    if (orderAmount < 0) {
        throw new InvalidOrderException("L'importo non può essere negativo.");
    }
    // Controllo simile in un altro servizio
    
    // Buono:
    // Logica di validazione centralizzata
    public void validateOrderAmount(double amount) {
        if (amount < 0) {
            throw new InvalidOrderException("L'importo non può essere negativo.");
        }
    }
    
  • Evitare la duplicazione della configurazione: Le impostazioni dell'applicazione vengono spostate in file di configurazione o archivi centralizzati.
  • Evitare la duplicazione della documentazione: Le informazioni sono strutturate e fanno riferimento a una fonte unica.

Seguendo il principio DRY si ottengono sistemi più modulari, facili da leggere e scalabili, cosa fondamentale per QA, poiché semplifica i test e la localizzazione dei difetti.