Sobes.tech
Junior

Τι είναι η αρχή DRY και ποια στοιχεία περιλαμβάνει;

sobes.tech AI

Απάντηση από AI

Η αρχή DRY (Don't Repeat Yourself) σημαίνει μην επαναλαμβάνεσαι. Είναι μια θεμελιώδης αρχή στην ανάπτυξη λογισμικού που στοχεύει στη μείωση της πλεονασματικότητας κώδικα και δεδομένων. Η τήρηση αυτής της αρχής βελτιώνει τη συντηρησιμότητα, την αναγνωσιμότητα και μειώνει την πιθανότητα σφαλμάτων.

Πτυχές της αρχής DRY:

  • Αποφυγή διπλότυπου κώδικα: Τα επαναλαμβανόμενα μπλοκ κώδικα μεταφέρονται σε συναρτήσεις, κλάσεις, modules.
    # Κακό:
    def process_user_data(user):
        print(f"Επεξεργασία δεδομένων για τον χρήστη: {user['name']}")
        # Πολλά βήματα επεξεργασίας
        print("Ολοκλήρωση επεξεργασίας.")
    
    def process_order_data(order):
        print(f"Επεξεργασία δεδομένων για την παραγγελία: {order['id']}")
        # Πολλά βήματα επεξεργασίας (παρόμοια με δεδομένα χρήστη)
        print("Ολοκλήρωση επεξεργασίας.")
    
    # Καλό:
    def process_data(item_type, item_id):
        print(f"Επεξεργασία δεδομένων για {item_type}: {item_id}")
        # Κοινά βήματα επεξεργασίας
        print("Ολοκλήρωση επεξεργασίας.")
    
    process_data("user", user['name'])
    process_data("order", order['id'])
    
  • Αποφυγή διπλότυπων δεδομένων: Η ίδια πληροφορία αποθηκεύεται σε ένα μέρος (π.χ. παράμετροι διαμόρφωσης, σταθερές).
    // Κακό:
    {
      "api_url_users": "https://api.example.com/users",
      "api_url_orders": "https://api.example.com/orders"
    }
    
    // Καλό:
    {
      "base_api_url": "https://api.example.com",
      "endpoints": {
        "users": "/users",
        "orders": "/orders"
      }
    }
    
  • Αποφυγή διπλότυπης επιχειρηματικής λογικής: Οι κανόνες και οι αλγόριθμοι υλοποιούνται μόνο μία φορά.
    // Κακό:
    // Επικύρωση σε πολλαπλά σημεία
    if (orderAmount < 0) {
        throw new InvalidOrderException("Το ποσό δεν μπορεί να είναι αρνητικό.");
    }
    // Παρόμοιος έλεγχος σε άλλη υπηρεσία
    
    // Καλό:
    // Κεντρική λογική επικύρωσης
    public void validateOrderAmount(double amount) {
        if (amount < 0) {
            throw new InvalidOrderException("Το ποσό δεν μπορεί να είναι αρνητικό.");
        }
    }
    
  • Αποφυγή διπλότυπης διαμόρφωσης: Οι ρυθμίσεις της εφαρμογής μεταφέρονται σε αρχεία διαμόρφωσης ή κεντρικές αποθήκες.
  • Αποφυγή διπλότυπης τεκμηρίωσης: Οι πληροφορίες δομούνται και αναφέρονται σε μια ενιαία πηγή.

Η τήρηση της αρχής DRY οδηγεί σε πιο αρθρωτά, εύκολα αναγνώσιμα και κλιμακούμενα συστήματα, κάτι που είναι κρίσιμο για το QA, καθώς απλοποιεί τις δοκιμές και τον εντοπισμό σφαλμάτων.