Η απάντηση είναι ότι οι αμετάβλητοι τύποι είναι πιο ασφαλείς από σφάλματα, πιο κατανοητοί και πιο έτοιμοι για αλλαγή. Η μεταβλητότητα καθιστά πιο δύσκολη την κατανόηση του τι κάνει το πρόγραμμά σας και πολύ πιο δύσκολη την επιβολή των συμβολαίων.
Είναι κακά τα μεταβλητά αντικείμενα;
Τέλος, τα μεταβλητά αντικείμενα είναι δολοφόνοι σε ταυτόχρονες καταστάσεις. Κάθε φορά που έχετε πρόσβαση σε ένα μεταβλητό αντικείμενο από ξεχωριστά νήματα, πρέπει να αντιμετωπίσετε το κλείδωμα. Αυτό μειώνει την απόδοση και κάνει τον κώδικά σας δραματικά πιο δύσκολο να διατηρηθεί.
Γιατί η κοινή κατάσταση είναι κακή;
Κοινή μεταβλητή κατάσταση λειτουργεί ως εξής: Εάν δύο ή περισσότερα μέρη μπορούν να αλλάξουν τα ίδια δεδομένα (μεταβλητές, αντικείμενα κ.λπ.). Και αν οι ζωές τους αλληλεπικαλύπτονται. Τότε υπάρχει ο κίνδυνος οι τροποποιήσεις ενός μέρους να εμποδίσουν τα άλλα μέρη να λειτουργήσουν σωστά.
Γιατί η αμετάβλητη είναι καλό πράγμα;
Εκτός από τη μειωμένη χρήση μνήμης, η αμετάβλητη σας επιτρέπει να βελτιστοποιήσετε την εφαρμογή σας χρησιμοποιώντας την ισότητα αναφοράς και τιμής. Αυτό καθιστά πολύ εύκολο να δούμε αν έχει αλλάξει κάτι. Για παράδειγμα, μια αλλαγή κατάστασης σε ένα στοιχείο react.
Ποια είναι τα μειονεκτήματα του αμετάβλητου;
Το μόνο πραγματικό μειονέκτημα των αμετάβλητων κλάσεων είναι ότι απαιτούν ξεχωριστό αντικείμενο για κάθε διακριτή τιμή. Η δημιουργία αυτών των αντικειμένων μπορεί να είναι δαπανηρή, ειδικά αν είναι μεγάλα. Για παράδειγμα, ας υποθέσουμε ότι έχετε ένα BigInteger ενός εκατομμυρίου bit και θέλετε να αλλάξετε το bit χαμηλής τάξης του:BigInteger moby=…; moby=moby.