Ο Νόμος της Δήμητρας είναι μια κατευθυντήρια γραμμή σχεδιασμού για την ανάπτυξη λογισμικού, ιδιαίτερα στον προγραμματισμό προσανατολισμένο σε αντικείμενα. Στόχος του είναι να μειώσει τις εξαρτήσεις μεταξύ των αντικειμένων, καθιστώντας τα συστήματα πιο αρθρωτά, πιο εύκολο στη διατήρηση, και λιγότερο επιρρεπείς σε σφάλματα.

Κατανόηση του Νόμου της Δήμητρας

Ο Νόμος της Δήμητρας, συχνά συνοψίζεται ως ⁇ μόνο μιλάμε στους άμεσους φίλους σας ⁇ ενθαρρύνει αντικείμενα να επικοινωνούν μόνο με τους άμεσους συνεργάτες τους. Αυτό σημαίνει ότι ένα αντικείμενο πρέπει να επικαλείται μόνο μεθόδους:

  • Ο ίδιος
  • Αντικείμενα που έχουν περάσει ως παραμέτρους
  • Αντικείμενα που δημιουργεί
  • Τα άμεσα συστατικά αντικείμενα του

Με την τήρηση αυτού του κανόνα, οι εξαρτήσεις του αντικειμένου ελαχιστοποιούνται, μειώνοντας τον κίνδυνο της στενής σύζευξης και καθιστώντας τον κώδικα ευκολότερο να αλλάξει ή να επεκταθεί.

Εφαρμογή του Νόμου της Δήμητρας

Η εφαρμογή του Νόμου της Δήμητρας περιλαμβάνει το σχεδιασμό τάξεων και μεθόδων που δεν φτάνουν βαθιά στα γραφήματα αντικειμένων.

Παραγγελία.getCustomers ().getAddress ().getCity ()

Είναι καλύτερα να παράσχουμε μια μέθοδο που να επιστρέφει τις απαραίτητες πληροφορίες απευθείας:

Παραγγελία.getCustomerCity()

Συμβουλές που Αναπαράγονται

  • Ενσωματώστε περίπλοκες αλυσίδες μέσα στην ίδια την τάξη.
  • Δημιουργήστε μεθόδους που εκθέτουν μόνο τα απαραίτητα δεδομένα.
  • Χρησιμοποιήστε σχέδια σχεδιασμού όπως Facade ή Mediator για να μειώσει τις εξαρτήσεις.
  • Να έχεις τα μαθήματα συγκεντρωμένα σε μια μόνο ευθύνη.

Οφέλη από την Ακολούθηση του Νόμου της Δήμητρας

Η τήρηση αυτού του νόμου προσφέρει διάφορα πλεονεκτήματα:

  • Μειώνει τη σύζευξη μεταξύ των κατηγοριών.
  • Βελτιώνει την αναγνωσιμότητα και τη διατηρησιμότητα του κώδικα.
  • Κάνει τη δοκιμή μονάδας ευκολότερη με την απομόνωση αντικειμένων.
  • Διευκολύνει την πιο εύκολη αναπαράσταση και επέκταση του κώδικα.

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