Ένα κοινό λάθος προγραμματιστές λογισμικού αρχαρίων κάνει, και πώς να το αποφύγετε

Φωτογραφία από την Fancycrave στο Unsplash

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

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

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

Αυτό χάλια !!!

Yuck, υπάρχει διακόσια γραμμή λειτουργία εδώ.

Ποιος έγραψε αυτά τα χάλια!

Ω Θεέ, υπάρχει μπλοκ if-else μέσα σε ένα block if-else.

Αυτός ο κώδικας είναι ένα μεγάλο τριχωτό χάος! eff.

Αυτό πρέπει να ξαναγραφεί από το μηδέν.

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

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

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

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

Ο κώδικας γράφεται για διαφορετικό λόγο

Οι περισσότεροι άνθρωποι νέοι στην ανάπτυξη λογισμικού, συμπεριλαμβανομένου μου, πιστεύω ότι ο κώδικας είναι γραμμένος για μηχανές. Λανθασμένος. Ναντά. Γράφτηκε για τους ανθρώπους. Το μηχάνημα δεν βλέπει καν τον κώδικα JavaScript που γράφετε, όλα όσα βλέπουν είναι μια ακολουθία από 0s και 1s. Και καθώς η υπηρεσία για την ομάδα μου δημιουργήθηκε, υπήρχαν πραγματικές προθεσμίες με παραδοτέα που έπρεπε να παραδοθούν. Οι προγραμματιστές λογισμικού έχουν ήδη πολύ διανοητική φορολογία. Κάπου στην πίεση για να παραδώσει, να πάρει τον κώδικα στην εργασία έχει προτεραιότητα σε σχέση με το γράψιμο super αισθητικά ευχάριστο κώδικα.

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

Ο κώδικας παραγωγής δοκιμάζεται με μάχη

Η ομάδα μου έχει πολλές αναφορές περιστατικών, οι οποίες μερικές φορές οδηγούν σε κρίσιμες διορθώσεις σφαλμάτων στον κώδικα. Ένα σφάλμα χειρισμού if-else ρήτρα εδώ, ένα try-catch εκεί, και ξαφνικά, ολόκληρη η βάση κώδικα έχει αυξηθεί τρίχες. Αυτός είναι ο τρόπος με τον οποίο ο κώδικας βάσης αρχίζει να παίρνει πιο messier παρά τις καλύτερες προθέσεις.

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

Τι λειτουργεί είναι ο τρόπος

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

Το αντίδοτο

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

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

Πάρτε περιέργεια

Αρχίστε να ρωτάτε γιατί!

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

Τις περισσότερες φορές, θα εκπλαγείτε από την απάντηση.

Αναπτύξτε την ταπεινότητα

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

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

συμπέρασμα

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

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