Sobes.tech
Junior

Kas yra DRY principas ir kokius aspektus jis apima?

sobes.tech AI

Atsakymas iš AI

DRY (Don't Repeat Yourself) principas — nesikartok. Tai pagrindinis programavimo principas, skirtas sumažinti perteklinį kodą ir duomenis. Laikantis šio principo, padidėja palaikymo galimybės, skaitomumas ir sumažėja klaidų tikimybė.

DRY principo aspektai:

  • Kodo dubliavimosi vengimas: Kartojami blokai išskiriami į funkcijas, klases, modulius.
    // Blogai:
    def process_user_data(user):
        print(f"Processing data for user: {user['name']}")
        # Daug apdorojimo žingsnių
        print("Data processing finished.")
    
    def process_order_data(order):
        print(f"Processing data for order: {order['id']}")
        # Daug apdorojimo žingsnių (panašiai kaip naudotojo duomenys)
        print("Data processing finished.")
    
    // Gerai:
    def process_data(item_type, item_id):
        print(f"Processing data for {item_type}: {item_id}")
        # Bendri apdorojimo žingsniai
        print("Data processing finished.")
    
    process_data("user", user['name'])
    process_data("order", order['id'])
    
  • Duomenų dubliavimosi vengimas: Ta pati informacija saugoma vienoje vietoje (pvz., konfigūracijos parametrai, konstantos).
    // Blogai:
    {
      "api_url_users": "https://api.example.com/users",
      "api_url_orders": "https://api.example.com/orders"
    }
    
    // Gerai:
    {
      "base_api_url": "https://api.example.com",
      "endpoints": {
        "users": "/users",
        "orders": "/orders"
      }
    }
    
  • Verslo logikos dubliavimosi vengimas: Taisyklės ir algoritmai įgyvendinami vieną kartą.
    // Blogai:
    // Validacija keliuose vietose
    if (orderAmount < 0) {
        throw new InvalidOrderException("Amount cannot be negative.");
    }
    // Panaši patikra kitame servise
    
    // Gerai:
    // Centralizuota validacijos logika
    public void validateOrderAmount(double amount) {
        if (amount < 0) {
            throw new InvalidOrderException("Amount cannot be negative.");
        }
    }
    
  • Konfigūracijos dubliavimosi vengimas: Programos nustatymai išskiriami į konfigūracijos failus arba centralizuotus saugyklas.
  • Dokumentacijos dubliavimosi vengimas: Informacija struktūruojama ir nuoroda pateikiama į vieną šaltinį.

Laikantis DRY principo, sukuriamos modulinės, lengvai skaitomos ir skalaujamos sistemos, kas yra itin svarbu QA, nes tai palengvina testavimą ir defektų lokalizaciją.