Ο κωδικός σας δεν είναι τρομερός; Σου αρέσει να χτυπάς τον εαυτό σου όταν το διαβάζεις; Πιστέψτε με, όλοι οι προγραμματιστές το έχουν βιώσει αυτό…

Σε αυτό το άρθρο, θα σας διδάξω πώς να βελτιώσετε τον κώδικά σας. Στα αγγλικά, λέμε "refractoring".

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

Θα σας δώσω έναν γρήγορο ορισμό της επανεγγραφής κώδικα που μου αρέσει:

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

Martin Fowler
Λοιπόν, μετέφρασα κατά προσέγγιση, αλλά η ιδέα είναι εκεί. Πρέπει να ξαναγράψετε κομμάτια κώδικα χωρίς να αλλάξετε τη συνολική λειτουργία.

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

Τι είναι ο κακός κώδικας;
Για να μπορέσετε να ξαναγράψετε τον κώδικά σας με στόχο να τον βελτιώσετε, πρέπει ήδη να καταλάβετε τι τον κάνει κακό και, κατ' επέκταση, τέλειο.

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

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

Πρακτικά παραδείγματα κακού κώδικα
Ας δούμε τώρα συγκεκριμένα παραδείγματα κακού κώδικα στα οποία μπορείτε να ενεργήσετε τώρα!

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

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

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

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

Σας συμβουλεύω πραγματικά να γράψετε τη θεμελιώδη λειτουργία των εφαρμογών σας σε συναρτήσεις / κλάσεις και να τις καλέσετε στο πρόγραμμά σας.

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

Όσο μεγαλύτερη είναι η λειτουργία σας, τόσο πιο δύσκολο είναι να τη διατηρήσετε και να δοκιμάσετε.

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

Γενικά προσπαθώ να κρατώ τις συναρτήσεις σύντομες και να ανατίθενται σε μία μόνο εργασία. Μετά τα συνδυάζω για να δημιουργήσω προγράμματα.

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

Ωστόσο, τα σχόλιά σας δεν πρέπει να εξηγούν πώς λειτουργούν οι λειτουργίες σας. Πρέπει να εξηγήσουν τι κάνουν.

Ο καλός κώδικας πρέπει να γίνει κατανοητός απλά διαβάζοντάς τον. Για παράδειγμα, θα γράψετε ως σχόλιο:

Στείλτε ένα αίτημα για δημιουργία χρήστη

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

Στέλνουμε ένα ασύγχρονο αίτημα AJAX, επιλύουμε την υπόσχεση, αποθηκεύουμε σε ένα αντικείμενο και επιστρέφουμε στην απάντηση

Εάν ο κώδικάς σας είναι καλά γραμμένος, δεν χρειάζεται να τα αναφέρουμε λεπτομερώς, πρέπει να τον καταλάβουμε απλώς διαβάζοντας τον κωδικό σας.

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

Chained if else μπλοκ
Πολύ συχνά, οι αρχάριοι προγραμματιστές τείνουν να αλυσιδώνουν if else σε ένα μόνο μπλοκ κώδικα.

Αυτό είναι λάθος, πρέπει να διαχωρίσετε τη λογική σας σε διαφορετικές λειτουργίες. Οπότε κατ' επέκταση, το δικό σου if other.

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

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

Σοβαρά, μην το κάνεις αυτό. Θα καταλήξετε με 3000 αρχεία γραμμής για μόνο 1000 γραμμές ενεργού κώδικα.

Απλώς αφαιρέστε τον νεκρό κωδικό, θα εξοικονομήσετε χρόνο.

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

Πρέπει να αναρωτηθείτε: Διακινδυνεύω να σπάσω τα προγράμματά μου ξαναγράφοντας τον κώδικά μου;

Λοιπόν ναι. Αν δεν προσέξεις, θα συμβεί. Για να ξεπεράσετε αυτό το πρόβλημα, πρέπει να ξαναγράψετε τη δυνατότητα του κώδικα ανά χαρακτηριστικό για να αποφύγετε την αλλαγή της συνολικής λογικής. Θέλετε να τροποποιήσετε την εσωτερική λειτουργία χωρίς να αγγίξετε την εξωτερική λειτουργία, μην το ξεχνάτε ποτέ!

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

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

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

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

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

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

Πότε να ξαναγράψετε τον κώδικά σας;
Φτάνουμε στο μεγάλο ερώτημα αυτού του οδηγού, πότε να ξαναγράψετε τον κώδικά σας; Πολλοί προγραμματιστές θα σας πουν ότι έρχεται φυσικά και ότι δεν πρέπει να το σκέφτεστε πολύ.

Λοιπόν, νομίζω ότι υπάρχουν καλές στιγμές, εδώ είναι μερικές:

Μετά την κυκλοφορία μιας έκδοσης
Λοιπόν, ναι, μπορεί να ακούγεται ανόητο, γιατί να βελτιώσετε τον κώδικά σας μετά την κυκλοφορία μιας έκδοσης;

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

Μόλις η νέα έκδοση είναι online, προχωράτε. Είναι επομένως πολύ πιο εύκολο να το ξαναγράψουμε αυτή τη στιγμή.

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

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

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

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

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

Σας συνιστώ λοιπόν να ξαναγράφετε τον κώδικά σας νωρίς και σχετικά συχνά.

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

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

Ελπίζω να σας άρεσε αυτό το άρθρο, αν ναι, εγγραφείτε στο ενημερωτικό δελτίο μου. Ως μπόνους, θα λάβετε ένα δωρεάν βιβλίο για να ξεκινήσετε καλά τον προγραμματισμό σας!

ΓΙΑΣΙΝ ΧΟΥΤΑ