Επανεξέταση κώδικα - Ο απόλυτος οδηγός

Ο απόλυτος οδηγός για τη δημιουργία της διαδικασίας ελέγχου κώδικα της ομάδας σας

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

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

Ας αναφέρουμε γρήγορα μερικούς απλούς λόγους για τους οποίους πρέπει να κάνετε κριτικές κώδικα:

  1. Μπορεί να βοηθήσει στη μείωση των σφαλμάτων στον κώδικα.
  2. Επικυρώστε ότι έχουν συμπληρωθεί όλες οι απαιτήσεις κωδικοποίησης.
  3. Ένας αποτελεσματικός τρόπος για να μάθετε από τους συνομηλίκους και να εξοικειωθείτε με τη βάση κώδικα.
  4. Βοηθά στη διατήρηση του στυλ κώδικα σε όλη την ομάδα.
  5. Ομαδική συνοχή - ενθαρρύνετε τους προγραμματιστές να μιλούν μεταξύ τους σχετικά με τις βέλτιστες πρακτικές και τα πρότυπα κωδικοποίησης.
  6. Βελτιώνει τη συνολική ποιότητα του κώδικα λόγω πίεσης από ομοτίμους.

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

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

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

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

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

Ορίστε προϋποθέσεις για τη δημιουργία αιτημάτων έλξης.

Έχω διαπιστώσει ότι τα ακόλουθα μειώνουν σημαντικά την τριβή:

  1. Βεβαιωθείτε ότι ο κώδικας μεταγλωττίζεται με επιτυχία.
  2. Διαβάστε και σχολιάστε τον κωδικό σας.
  3. Δημιουργήστε και εκτελέστε δοκιμές που επικυρώνουν το πεδίο εφαρμογής του κώδικα σας.
  4. Όλος ο κώδικας στη βάση κώδικα πρέπει να δοκιμάζεται.
  5. Συνδέστε τα σχετικά εισιτήρια / αντικείμενα στο εργαλείο διαχείρισης εργασιών σας (για παράδειγμα το JIRA) στο αίτημα τραβήγματος.
  6. Μην εκχωρήσετε έναν κριτικό έως ότου ολοκληρώσετε τα παραπάνω.

Ορίστε τις ευθύνες των κριτικών

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

  1. Επικοινωνήστε με τον αναθεωρητή σας - Δώστε στους αναθεωρητές σας ιστορικό σχετικά με την εργασία σας. Δεδομένου ότι οι περισσότεροι από εμάς οι συγγραφείς αιτημάτων έλξης πιθανότατα είναι ήδη αναθεωρητές, απλώς βάλτε τον εαυτό σας στα χέρια του αναθεωρητή και ρωτήστε: "Πώς θα μπορούσε να είναι πιο εύκολο για μένα;"
  2. Κάντε μικρότερα αιτήματα έλξης - Η υποβολή μικρότερων αιτημάτων έλξης είναι ο καλύτερος τρόπος για να επιταχύνετε τον χρόνο αναθεώρησης. Διατηρήστε τα αιτήματα έλξης μικρά ώστε να μπορείτε να επαναλαμβάνετε πιο γρήγορα και με ακρίβεια. Σε γενικές γραμμές, οι μικρότερες αλλαγές κώδικα είναι επίσης πιο εύκολο να ελεγχθούν και να επαληθευτούν ως σταθερές. Όταν ένα αίτημα έλξης είναι μικρό, είναι ευκολότερο για τους αναθεωρητές να κατανοήσουν το πλαίσιο και τον λόγο με τη λογική.
  3. Αποφύγετε αλλαγές κατά την αναθεώρηση κώδικα - Οι σημαντικές αλλαγές στη μέση της αναθεώρησης κώδικα επαναφέρουν ουσιαστικά ολόκληρη τη διαδικασία ελέγχου. Εάν πρέπει να κάνετε σημαντικές αλλαγές μετά την υποβολή μιας αξιολόγησης, ίσως θελήσετε να αποστείλετε την υπάρχουσα κριτική σας και να συνεχίσετε με πρόσθετες αλλαγές. Εάν πρέπει να κάνετε σημαντικές αλλαγές μετά την έναρξη της διαδικασίας ελέγχου κώδικα, φροντίστε να το κοινοποιήσετε στον αναθεωρητή όσο το δυνατόν νωρίτερα στη διαδικασία.
  4. Απαντήστε σε όλα τα σχόλια για έλεγχο κώδικα με δυνατότητα δράσης - Ακόμα κι αν δεν εφαρμόσετε τα σχόλιά τους, απαντήστε σε αυτό και εξηγήστε τη συλλογιστική σας. Εάν υπάρχει κάτι που δεν καταλαβαίνετε, υποβάλετε ερωτήσεις εντός ή εκτός του ελέγχου κώδικα.
  5. Οι κριτικές κώδικα είναι συζητήσεις, όχι υπαγόρευση - Μπορείτε να θεωρήσετε τα περισσότερα σχόλια σχετικά με τον κώδικα ως πρόταση περισσότερο από μια παραγγελία. Είναι ωραίο να διαφωνείτε με τα σχόλια ενός σχολιαστή, αλλά πρέπει να εξηγήσετε γιατί και να τους δώσετε την ευκαιρία να απαντήσουν.

Ορίστε τις ευθύνες των κριτικών

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

  1. Να γνωρίζετε την περιγραφή και τις απαιτήσεις της εργασίας.
  2. Βεβαιωθείτε ότι έχετε κατανοήσει πλήρως τον κώδικα.
  3. Αξιολογήστε όλες τις ανταλλαγές αρχιτεκτονικής.
  4. Χωρίστε τα σχόλιά σας σε 3 κατηγορίες: Κρίσιμα, Προαιρετικά και Θετικά. Το πρώτο είναι σχόλια που πρέπει να αποδεχτεί ο προγραμματιστής για αλλαγή και το δεύτερο είναι σχόλια που επιτρέπουν στον προγραμματιστή να γνωρίζει την εκτίμησή σας για ωραία κομμάτια κώδικα.

Επίσης, αποφύγετε πολλά σχόλια και χρησιμοποιήστε την κριτική Github (δείτε το παρακάτω παράδειγμα).

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

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

  • Αντιμετωπίζω δυσκολία στην κατανόηση αυτού του κώδικα;
  • Υπάρχει κάποια πολυπλοκότητα στον κώδικα που θα μπορούσε να μειωθεί με την αναδιαμόρφωση;
  • Είναι ο κώδικας καλά οργανωμένος σε μια δομή πακέτων που έχει νόημα;
  • Είναι τα ονόματα των τάξεων διαισθητικά και είναι προφανές τι κάνουν;
  • Υπάρχουν τάξεις που είναι ιδιαίτερα μεγάλες;
  • Υπάρχουν ιδιαίτερα μακροχρόνιες μέθοδοι;
  • Φαίνονται όλα τα ονόματα μεθόδων σαφή και διαισθητικά;
  • Είναι ο κώδικας καλά τεκμηριωμένος;
  • Έχει δοκιμαστεί ο κώδικας;
  • Υπάρχουν τρόποι με τους οποίους αυτός ο κώδικας θα μπορούσε να γίνει πιο αποτελεσματικός;
  • Ο κώδικας πληροί τα πρότυπα στυλ των ομάδων μας;

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

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