Αντικειμενοστραφής προγραμματισμός#

Η Perl διαθέτει δύο συστήματα αντικειμένων που συνυπάρχουν: την σύγχρονη σύνταξη class/field/method που εισήχθη στην 5.38 (κωδική ονομασία Corinna) και το κλασικό μοντέλο bless/@ISA που προηγείται κατά τρεις δεκαετίες. Η pperl υποστηρίζει και τα δύο, και τα δύο εμφανίζονται σε πραγματικό κώδικα που θα διαβάσετε και θα συντηρήσετε.

Η σύντομη εκδοχή:

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

  • Για παλαιό κώδικα, κατανοήστε τα bless, @ISA και τη σύμβαση $self = shift. Θα τα συναντήσετε σε κάθε βάση κώδικα πριν την 5.38, σε κάθε κύρια διανομή του CPAN και σε μεγάλο μέρος της ίδιας της Perl πυρήνα.

  • Τα Moose, Moo, Class::Accessor, Object::Pad είναι τα οικοσυστήματα του CPAN που κάλυψαν τις τραχιές γωνίες του κλασικού μοντέλου όσο το χαρακτηριστικό του πυρήνα ήταν ακόμη υπό σχεδίαση. Αποτελούν ιστορικό κεφάλαιο· ο νέος κώδικας στρέφεται στο class του πυρήνα.

Αυτό το δέντρο οδηγιών καλύπτει και τα δύο συστήματα από άκρη σε άκρη. Διαβάστε τα κεφάλαια με τη σειρά σε μια πρώτη ανάγνωση ή μεταβείτε σε αυτό που ταιριάζει στον κώδικα που έχετε μπροστά σας.

Ποιο κεφάλαιο χρειάζεστε#

Πότε να χρησιμοποιείτε αντικειμενοστρέφεια#

Η αντικειμενοστρέφεια είναι εργαλείο, όχι ύφος. Στραφείτε σε αυτήν όταν:

  • Το πρόβλημα έχει μικρό λεξιλόγιο ουσιαστικών (χρήστης, συνεδρία, αίτημα, εγγραφή) και μεγαλύτερο λεξιλόγιο ρημάτων που ενεργούν σε καθένα.

  • Ένα κομμάτι δεδομένων φέρει αναλλοίωτες ιδιότητες που πρέπει να επιβάλλονται σε ένα σημείο του κώδικα, όχι σε κάθε σημείο κλήσης.

  • Αναμένετε ότι η υλοποίηση πίσω από ένα σύνολο λειτουργιών θα αλλάξει, ενώ οι ίδιες οι λειτουργίες θα παραμείνουν σταθερές.

  • Μοντελοποιείτε μια κατηγορία με παραλλαγές και θέλετε ο πολυμορφισμός να επιλέγει τη σωστή συμπεριφορά.

Μη στρέφεστε στην αντικειμενοστρέφεια όταν:

  • Το πρόγραμμα είναι μικρό, γραμμικό και χωρίς επαναχρησιμοποιήσιμα ουσιαστικά.

  • Ένα απλό hash από hashes ή μια closure αρκούν.

  • Ο μόνος λόγος για να γράψετε μια κλάση είναι «μου φάνηκε πιο επαγγελματικό». Ένα σενάριο δώδεκα γραμμών δεν χρειάζεται κλάση.

Σημείωση για την εμβέλεια#

Αυτό το δέντρο είναι εγχειρίδιο εκμάθησης, όχι αναφορά. Οι εξαντλητικοί πίνακες σύνταξης βρίσκονται στις σελίδες αναφοράς ανά δεσμευμένη λέξη:

Συνδεθείτε σε αυτές όποτε χρειάζεστε την πλήρη επιφάνεια υπογραφής· αυτό το δέντρο σάς δίνει την επισκόπηση του προγραμματιστή που εργάζεται.