Sobes.tech
Junior

Ce este principiul DRY și ce aspecte include?

sobes.tech AI

Răspuns de la AI

Principiul DRY (Don't Repeat Yourself) înseamnă să nu te repeți. Este un principiu fundamental în dezvoltarea software care vizează reducerea redundanței de cod și date. Respectarea acestui principiu îmbunătățește întreținerea, lizibilitatea și reduce probabilitatea de erori.

Aspecte ale principiului DRY:

  • Evitarea duplicării codului: Blocurile de cod repetitive sunt mutate în funcții, clase, module.
    # Greșit:
    def process_user_data(user):
        print(f"Procesare date pentru utilizator: {user['name']}")
        # Multe etape de procesare
        print("Procesare finalizată.")
    
    def process_order_data(order):
        print(f"Procesare date pentru comandă: {order['id']}")
        # Multe etape de procesare (similar cu datele utilizatorului)
        print("Procesare finalizată.")
    
    # Corect:
    def process_data(item_type, item_id):
        print(f"Procesare date pentru {item_type}: {item_id}")
        # Etape de procesare comune
        print("Procesare finalizată.")
    
    process_data("user", user['name'])
    process_data("order", order['id'])
    
  • Evitarea duplicării datelor: Informația aceeași este stocată într-un singur loc (de exemplu, parametri de configurare, constante).
    // Greșit:
    {
      "api_url_users": "https://api.example.com/users",
      "api_url_orders": "https://api.example.com/orders"
    }
    
    // Corect:
    {
      "base_api_url": "https://api.example.com",
      "endpoints": {
        "users": "/users",
        "orders": "/orders"
      }
    }
    
  • Evitarea duplicării logicii de business: Reguli și algoritmi sunt implementați o singură dată.
    // Greșit:
    // Validare în mai multe locuri
    if (orderAmount < 0) {
        throw new InvalidOrderException("Suma nu poate fi negativă.");
    }
    // Verificare similară într-un alt serviciu
    
    // Corect:
    // Logică de validare centralizată
    public void validateOrderAmount(double amount) {
        if (amount < 0) {
            throw new InvalidOrderException("Suma nu poate fi negativă.");
        }
    }
    
  • Evitarea duplicării configurației: Setările aplicației sunt externalizate în fișiere de configurare sau depozite centralizate.
  • Evitarea duplicării în documentație: Informația este structurată și face referire la o singură sursă.

Respectarea principiului DRY duce la sisteme mai modulare, ușor de citit și scalabile, ceea ce este critic pentru QA, deoarece simplifică testarea și localizarea defectelor.