10 λόγοι για τους οποίους χρειάζεστε βελτιστοποίηση κώδικα
Ενώ γράφουμε κώδικα, παίρνουμε συνεχώς αποφάσεις και επιλέγουμε μεταξύ λύσεων που ίσως φαίνονται αρχικά ισοδύναμες. Αργότερα αυτό συνήθως αποδεικνύεται κάποιες επιλογές οδηγούν σε ένα πιο αποτελεσματικό πρόγραμμα από άλλες, έτσι φυσικά προκύπτει μια αναζήτηση για καλύτερες πρακτικές κωδικοποίησης και τεχνικές βελτιστοποίησης και αρχίζουμε δείτε ολόκληρη την αναπτυξιακή διαδικασία ως πρόβλημα βελτιστοποίησης για επίλυση.
Παρόλο που τα προβλήματα βελτιστοποίησης δεν είναι τα μόνα που προγραμματίζουν οι προγραμματιστές, για παράδειγμα υπάρχουν προβλήματα λήψης αποφάσεων και προβλήματα αναζήτησης, η βελτιστοποίηση είναι το καθήκον που καλύπτει τα διάφορα στάδια ανάπτυξης ιστού, ίσως το πιο.
Η βελτιστοποίηση κώδικα μπορεί να συμβεί σε διαφορετικά επίπεδα, ανάλογα με το πόσο κοντά η βελτιστοποίηση που πραγματοποιούμε είναι ο κωδικός μηχανής. Στην ανάπτυξη ιστού μπορούμε μόνο να πραγματοποιήσουμε βελτιστοποιήσεις υψηλότερου επιπέδου, καθώς οι βελτιστοποιήσεις σε επίπεδο Συνέλευσης ή χρόνου εκτέλεσης δεν είναι επιλογή για εμάς, αλλά έχουμε ακόμα πολλές ευκαιρίες.
Μπορούμε να βελτιστοποιήσουμε τον κώδικα μας σε αρχιτεκτονικό επίπεδο με έξυπνα σχέδια σχεδίασης, σε επίπεδο πηγαίου κώδικα χρησιμοποιώντας τις καλύτερες πρακτικές κωδικοποίησης και χρησιμοποιώντας τα κατάλληλα εργαλεία και μπορούμε επίσης να βελτιώσουμε την απόδοση της ομάδας μας από εισάγοντας οδηγούς στυλ κωδικοποίησης στη ροή εργασίας μας.
Όποια και αν είναι η τεχνική που επιλέγουμε να ακολουθήσουμε, υπάρχει ένας βασικός κανόνας που πρέπει να ακολουθήσει κάθε προσπάθεια βελτιστοποίησης κώδικα: πρέπει πάντα να πραγματοποιήστε τη βελτιστοποίηση με τρόπο που δεν αλλάζει την έννοια του κώδικα.
Τα οφέλη της βελτιστοποίησης του κώδικα αυξάνονται σύμφωνα με την ανάπτυξη του έργου μας, και ως ακόμη και αρχικά μικρά έργα μπορεί να γίνουν μεγάλα με το χρόνο, η απόκτηση στερεών δεξιοτήτων βελτιστοποίησης κώδικα σχεδόν πάντα έχει μετρήσιμα θετικά αποτελέσματα.
1. Βάση κώδικα καθαρισμού
Καθώς ένα έργο ωριμάζει και όλο και περισσότεροι προγραμματιστές αρχίζουν να εργάζονται σε αυτό, οι επικαλύψεις και οι επικαλύψεις συνήθως εμφανίζονται αργά ή γρήγορα, και ξαφνικά συνειδητοποιούμε ότι δύσκολα κατανοούμε τι συμβαίνει.
Δεν είναι τυχαίο ότι η διατήρηση της αρχής DRY (Do not Repeat Yourself) είναι ένας από τους ακρογωνιαίους λίθους της αποτελεσματικής ανάπτυξης λογισμικού. Μια καλά κωδικοποιημένη, προσεκτικά βελτιστοποιημένη βάση κώδικα στην οποία είμαστε σε θέση να επαναχρησιμοποιήστε τα ίδια στοιχεία πολλές φορές είναι πάντα πιο κομψή και τακτοποιημένη και επομένως είναι πολύ πιο εύκολη η κατανόηση και η συνεργασία.
2. Υψηλότερη συνέπεια
Η συνέπεια είναι σαν τη δουλειά του σπιτιού, όταν φροντίζεται σωστά, κανείς δεν το παρατηρεί, αλλά όταν παραμεληθεί, ολόκληρο το μέρος φαίνεται ακατάστατο και βρισκόμαστε στο χάος.
Η επίτευξη πλήρους συνοχής είναι δύσκολη, όπως η εξασφάλιση της συμβατότητας προς τα πίσω μπορεί τελικά να παρεμποδίσει τη βελτίωση, αλλά προσέχοντας χρησιμοποιώντας συνεκτικές οδηγίες κώδικα, συμβατά API και συνεπή πρότυπα μπορεί σίγουρα να μειώσει τον πόνο.
Η συνεκτικότητα του κώδικα είναι ιδιαίτερα σημαντική όταν πρέπει να ασχοληθούμε με κληρονομικό κώδικα, ή σε περιπτώσεις μεγαλύτερων σχεδίων περιλαμβάνουν πολλούς προγραμματιστές.
3. Ταχύτερες τοποθεσίες
Ο βελτιστοποιητικός κώδικας είναι παρόμοιος με την αγορά ενός ταχύτερου αυτοκινήτου. Ως αποτέλεσμα, τον κώδικα μας εκτελείται πιο γρήγορα, και τον ιστότοπο ή την εφαρμογή μας καταναλώνει λιγότερη μνήμη από πριν. Αν και η διαδικασία βελτιστοποίησης μπορεί να χρειαστεί πρόσθετος χρόνος και χρήμα, το αποτέλεσμα είναι α καλύτερη εμπειρία, όχι μόνο για τους προγραμματιστές αλλά και για τους τελικούς χρήστες.
Ο ταχύτερος κώδικας συνεπάγεται μικρότερες ώρες φόρτωσης σελίδας επίσης, που είναι μια μεγάλη υπόθεση και στους δύο κόσμους της βελτιστοποίησης μηχανών αναζήτησης και του μάρκετινγκ μετατροπών. Η έρευνα το λέει “σχεδόν το ήμισυ των χρηστών του ιστού αναμένουν ότι ένας ιστότοπος θα φορτωθεί σε 2 δευτερόλεπτα ή λιγότερο και τείνουν να εγκαταλείψουν έναν ιστότοπο που δεν έχει φορτωθεί μέσα σε 3 δευτερόλεπτα”, έτσι η ταχύτητα δεν είναι σαφώς ένας τομέας που μπορούμε να αγνοήσουμε με ασφάλεια.
4. Ευκολότερη αναγνώριση κώδικα
Η αναγνωσιμότητα είναι μια σημαντική πτυχή της διατήρησης του κώδικα. Ο ακατάλληλος κώδικας με μορφοποίηση ad hoc είναι δύσκολο να διαβαστεί, επομένως δύσκολο να κατανοηθεί, ειδικά για προγραμματιστές νέους σε ένα έργο.
Μπορούμε να προστατευτούμε από ο πόνος της αντιμετώπισης με τον αδιαφανή κώδικα αν εφαρμόσουμε ορισμένες τεχνικές βελτιστοποίησης κώδικα, όπως:
- χρησιμοποιώντας συνεκτικές συμβάσεις ονομασίας με σημαντικά ονόματα, όπως το BEM
- συνεπής μορφοποίηση με λογική χρήση της εσοχής, λευκού και κατακόρυφου διαστήματος
- αποφεύγοντας περιττό θόρυβο, όπως αυτονόητα, προφανή σχόλια
Αυτός είναι ο λόγος για τον οποίο μεγάλα έργα, όπως το WordPress, το jQuery και το Mootools, έχουν ξεκάθαρα οδηγούς στυλ κωδικοποίησης που κάθε σχεδιαστής πρέπει να ακολουθήσει.
5. Περισσότερο αποδοτικό ανασχηματισμό
Συχνά συμβαίνει στην ανάπτυξη ιστού ότι κληρονομούμε τον κώδικα από κάποιον άλλο και γρήγορα καταλαβαίνουμε ότι είναι μακριά από το να είναι βέλτιστο, είτε από άποψη τη δομή, τις επιδόσεις ή τη συντηρησιμότητα. Το ίδιο πράγμα μπορεί να συμβεί και με τα δικά μας προηγούμενα έργα που γράψαμε όταν είχαμε πολύ λιγότερη εμπειρία στον προγραμματισμό.
Σε άλλες περιπτώσεις οι στόχοι μιας άλλως μεγάλης αλλαγής έργου με την πάροδο του χρόνου, και πρέπει να το κάνουμε να δώσετε προτεραιότητα σε άλλα πράγματα στην εφαρμογή από πριν.
Μιλάμε για refactoring όταν εμείς αλλαγή (καθαρισμός) του υπάρχοντος κώδικα προκειμένου να το βελτιστοποιήσει χωρίς να αλλάξει καμία από τις λειτουργίες του. Ο ανασχεδιασμός πρέπει να γίνει με μεγάλη προσοχή, σαν να γίνεται με λάθος τρόπο, μπορούμε εύκολα να καταλήξουμε σε μια βάση κώδικα που είναι ακόμη λιγότερο βέλτιστη από την αρχική.
Ευτυχώς έχουμε πολλές καλά δοκιμασμένες τεχνικές στα χέρια μας που μπορούν να κάνουν μια επαναχρηματοδότηση μια διαδικασία ομαλής λειτουργίας.
6. Περισσότερο απλό σφάλμα
Η διαδικασία εντοπισμού σφαλμάτων καταλαμβάνει ένα σημαντικό μέρος της ροής εργασιών ανάπτυξης ιστού και είναι συνήθως ένα κουραστικό ή και δύσκολο έργο. Είναι αρκετά δύσκολο αν πρέπει να διορθώσουμε τον δικό μας κώδικα, αλλά είναι πολύ χειρότερα όταν πρέπει να βρούμε τα σφάλματα σε κάποιον άλλο, ειδικά αν είναι κάτι σαν ατέλειωτο κωδικό σπαγγέτι που δεν χρησιμοποιεί τίποτα αλλά λειτουργίες.
Έξυπνο σχέδιο και αρχιτεκτονικά πρότυπα, όπως χρησιμοποιώντας αντικείμενα και διαφορετικές ενότητες, και σαφείς οδηγίες κωδικοποίησης μπορεί να διευκολύνει τη διαδικασία εντοπισμού σφαλμάτων, ακόμα και αν πιθανότατα δεν θα είναι ακόμα το αγαπημένο μας έργο.
7. Βελτιωμένη ροή εργασίας
Πολλά προγράμματα ανάπτυξης ιστού διοικούνται από κατανεμημένες ομάδες, όπως κοινότητες ανοιχτού κώδικα ή απομακρυσμένες ομάδες. Ένα από τα πιο δύσκολα πράγματα στη διαχείριση μιας τέτοιας ροής εργασίας είναι να βρούμε έναν τρόπο που να καθιστά την επικοινωνία αρκετά αποτελεσματική επιτρέπουν στα μέλη της ομάδας να κατανοούν εύκολα ο ένας τον άλλον, και να μην πρέπει να συζητάμε συνεχώς τις αθετήσεις.
Συμφωνημένοι με τις βέλτιστες πρακτικές και τους οδηγούς στυλ μπορεί να γεφυρώσει το χάσμα μεταξύ ανθρώπων από διαφορετικά υπόβαθρα, για να μην αναφέρουμε τις συνήθεις δυσκολίες επικοινωνίας μεταξύ σχεδιαστικών και αναπτυξιακών ομάδων στα περισσότερα έργα web.
Η βελτιστοποίηση κώδικα είναι επίσης βελτιστοποίηση ροής εργασίας, σαν τα μέλη της ομάδας να μιλούν μια κοινή γλώσσα και να μοιράζονται τους ίδιους δηλωμένους στόχους, θα μπορούν επίσης να συνεργαστούν χωρίς πολύ λιγότερες παρενοχλήσεις.
8. Συντήρηση ευκολότερου κώδικα
Αν και η οικοδόμηση κάποιου στοιχείου από το έδαφος τείνει να είναι πιο διασκεδαστική από τη διατήρηση του προϋπάρχοντος κώδικα, μερικές φορές εξακολουθούμε να χρειαζόμαστε συνεχή συντήρηση κώδικα. Η συνεργασία με ήδη υπάρχοντα συστήματα μπορεί επίσης να μας δώσει νέες απόψεις σχετικά με τη βελτιστοποίηση κώδικα, καθώς είναι μια διαφορετική εμπειρία από τις πρώτες βελτιστοποιήσεις σε ένα νέο έργο.
Στη συντήρηση λογισμικού, βρισκόμαστε ήδη σε ένα στάδιο όπου μπορούμε να εντοπίσουμε πραγματικά προβλήματα απόδοσης και αποδοτικότητας και να συνεργαστούμε με πραγματικούς χρήστες αντί υποθέσεων υποθετικής χρήσης.
Η συντήρηση του κώδικα συνήθως δεν σέβεται τους κύκλους των προγραμματιστών, αλλά εξακολουθεί να μπορεί να αποτελέσει ανταμοιβή αν ακολουθήσουμε τις βέλτιστες πρακτικές, όπως η χρήση αξιόπιστο έλεγχο της έκδοσης, διαχείριση εξάρτησης, πλατφόρμα στάσης και δοκιμές, και σωστά φροντίστε την τεκμηρίωση.
9. Ταχύτερη ανάπτυξη λειτουργιών
Συνεχής καινοτομία είναι ο πυρήνας της διατήρησης του ενδιαφέροντος στον τομέα μας, καθώς εάν δεν έχουμε δείξει κάτι καινούργιο στους χρήστες μας σε λίγο, μπορούμε γρήγορα να μείνουμε πίσω. Η επέκταση ενός έργου και η προσθήκη νέων λειτουργιών σε αυτό είναι συνήθως πολύ γρηγορότερη αν δουλέψουμε με μια καλά βελτιστοποιημένη και καθαρή βάση κώδικα.
Εκτός από τις ήδη συζητημένες μεθόδους βελτιστοποίησης κώδικα, η ανάπτυξη χαρακτηριστικών μπορεί επίσης να κερδίσει δυναμική, εάν συνεχίσουμε σύγχρονες μεθόδους διαχείρισης έργων, για παράδειγμα αν χρησιμοποιούμε μοντέλα επαναληπτικού κύκλου ζωής αντί του παραδοσιακού μοντέλου καταρράκτη.
10. Μικρότερο τεχνικό χρέος
Ο όρος "τεχνικό χρέος" σχεδιάστηκε από τον Ward Cunningham, τον προγραμματιστή που ανέπτυξε επίσης το πρώτο wiki. Συγκρίνει τις συνέπειες των κακών μας αποφάσεων προγραμματισμού που συσσωρεύονται με την πάροδο του χρόνου στο χρηματοοικονομικό χρέος στο οποίο οι άνθρωποι πληρώνουν τόκους στο μέλλον για να πάρουν γρήγορα χρήματα στο παρόν.
Αυτές οι αποφάσεις λιγότερο από βέλτιστες συνήθως εκδηλώνονται με τη μορφή γρήγορων διορθώσεων, αντιγραφής και επικόλλησης προγραμματισμού, σκληρού κωδικοποίησης, προγραμματισμού λαθρεμπορίου φορτίου και άλλων κωδικοποιούν αντιπαλμούς και δυσάρεστες συνήθειες εργασίας.
Είναι βασικά αδύνατο να αποφευχθεί πλήρως το τεχνικό χρέος, καθώς ακόμη καλές αποφάσεις μπορεί να είναι λιγότερο επιθυμητές συνέπειες στο μέλλον, αλλά αν βελτιστοποιήσουμε επιμελώς τον κώδικα μας, σίγουρα θα είμαστε επιβαρύνονται με πολύ μικρότερο τεχνικό χρέος.