Διαφορά μεταξύ σύζευξης και συνοχής

Διαφορά μεταξύ σύζευξης και συνοχής
Διαφορά μεταξύ σύζευξης και συνοχής

Βίντεο: Διαφορά μεταξύ σύζευξης και συνοχής

Βίντεο: Διαφορά μεταξύ σύζευξης και συνοχής
Βίντεο: Σε τι διαφέρουν τα Κλικ από τις Περιόδους Σύνδεσης (Sessions); 2024, Νοέμβριος
Anonim

Coupling vs Cohesion

Η σύζευξη και η συνοχή είναι δύο έννοιες που απαντώνται στην Java (και σε όλες τις άλλες αντικειμενοστρεφείς γλώσσες). Η σύζευξη μετρά πόσο εξαρτάται κάθε μία από τις ενότητες προγράμματος από τις άλλες ενότητες προγράμματος. Η συνοχή μετρά πόσο στενά σχετίζεται κάθε μια από τις λειτουργίες μέσα σε μια ενότητα. Στην πραγματικότητα, οποιαδήποτε αντικειμενοστραφή γλώσσα (συμπεριλαμβανομένης της Java) έχει τους δύο κύριους στόχους της αύξησης της συνοχής και της μείωσης της σύζευξης ταυτόχρονα, προκειμένου να αναπτυχθούν πιο αποτελεσματικά προγράμματα. Αυτές οι δύο μετρήσεις μηχανικής λογισμικού αναπτύχθηκαν από τον Larry Constantine για τη μείωση του κόστους τροποποίησης και συντήρησης λογισμικού.

Τι είναι η συνοχή;

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

Τι είναι η σύζευξη;

Η σύζευξη μετρά πόσο εξαρτάται κάθε μία από τις μονάδες προγράμματος από τις άλλες μονάδες προγράμματος. Οι αλληλεπιδράσεις μεταξύ δύο αντικειμένων συμβαίνουν επειδή υπάρχει σύζευξη. Τα προγράμματα με χαλαρή σύζευξη έχουν υψηλή ευελιξία και επεκτασιμότητα. Η ισχυρή σύζευξη δεν είναι ποτέ καλή γιατί ένα αντικείμενο μπορεί να εξαρτάται σε μεγάλο βαθμό από κάποιο άλλο αντικείμενο. Αυτό είναι ένας εφιάλτης όταν τροποποιείται ο κώδικας, επειδή η υψηλή σύζευξη σημαίνει ότι οι προγραμματιστές πρέπει να εργαστούν σε πολλά σημεία κώδικα για ακόμη και μία μόνο τροποποίηση συμπεριφοράς. Η ισχυρή σύζευξη οδηγεί πάντα σε προγράμματα με χαμηλή ευελιξία και λιγότερη επεκτασιμότητα/επεκτασιμότητα. Ωστόσο, σε γλώσσες προγραμματισμού όπως η Java, η πλήρης αποφυγή της σύζευξης είναι αδύνατη. Ωστόσο, συνιστάται στους προγραμματιστές να καταβάλλουν κάθε δυνατή προσπάθεια για να μειώσουν όσο το δυνατόν περισσότερο τη σύζευξη. Είναι επίσης δυνατό να έχουμε κάποια σύζευξη για να βοηθήσουμε τα αντικείμενα να αλληλεπιδρούν μεταξύ τους χωρίς να παρεμποδίζεται η επεκτασιμότητα και η ευελιξία τους.

Ποια είναι η διαφορά μεταξύ σύζευξης και συνοχής;

Αν και η σύζευξη και η συνοχή αφορούν την ποιότητα μιας ενότητας στη μηχανική λογισμικού, είναι εντελώς διαφορετικές έννοιες. Το Cohesion μιλάει για το πόσο σχετίζονται οι λειτουργίες μεταξύ τους εντός της ενότητας, ενώ η σύζευξη ασχολείται με το πόσο εξαρτάται μια ενότητα από τις άλλες ενότητες προγράμματος σε ολόκληρη την εφαρμογή. Προκειμένου να έχουμε την καλύτερη ποιότητα λογισμικού, η συνοχή και η σύζευξη πρέπει να φτάνουν στα δύο αντίθετα άκρα του φάσματος τους. Με άλλα λόγια, η χαλαρή σύζευξη και η ισχυρή συνοχή παρέχουν το καλύτερο λογισμικό. Τα ιδιωτικά πεδία, οι μη δημόσιες κλάσεις και οι ιδιωτικές μέθοδοι παρέχουν χαλαρή σύζευξη, ενώ κάνουν όλα τα μέλη ορατά εντός της κλάσης και έχοντας ως προεπιλεγμένη ορατότητα το πακέτο παρέχουν υψηλή συνοχή.

Συνιστάται: