Κατάργηση εξαρτημάτων συστήματος σχεδίασης χωρίς διακοπή ομάδων προϊόντων
Τρόπος ανάπτυξης επαναστατικών αλλαγών στο σύστημα σχεδίασης σε μεγάλες εφαρμογές: ανακοινώστε, καταργήστε, μετεγκαταστήστε με codemods και αφαιρέστε, χρησιμοποιώντας σημασιολογική έκδοση και παρακολούθηση χρήσης.
Core Takeaway
Αποσύρετε ένα στοιχείο σε τέσσερα βήματα: ανακοινώστε την αλλαγή με την αιτία και την αντικατάσταση, επισημάνετε το παλιό στοιχείο που έχει καταργηθεί σε μια δευτερεύουσα έκδοση με σαφείς προειδοποιήσεις, βοηθήστε τις ομάδες να μετεγκατασταθούν με οδηγούς και αυτοματοποιημένα προγράμματα κωδικοποίησης και καταργήστε το μόνο στην επόμενη κύρια έκδοση. Παρακολουθήστε πόσες οθόνες εξακολουθούν να το χρησιμοποιούν σε κάθε βήμα και μην το αφαιρέσετε έως ότου η χρήση πλησιάσει στο μηδέν.
Γιατί η κατάργηση πάει στραβά
Οι αλλαγές του συστήματος σχεδίασης αποτυγχάνουν όταν εκπλήσσουν τις ομάδες προϊόντων: ένα στοιχείο εξαφανίζεται σε μια ενημέρωση, δημιουργείται break και οι ομάδες καρφιτσώνουν την παλιά έκδοση και διακόπτουν την αναβάθμιση. Μόλις συμβεί αυτό, το σύστημα χάνει το κύριο πλεονέκτημά του, τη συνοχή, επειδή διαφορετικά μέρη του προϊόντος μετατοπίζονται σε διαφορετικές εκδόσεις.
Μια διαδικασία τεσσάρων βημάτων
Η σημασιολογική έκδοση δίνει ένα απλό συμβόλαιο: οι μη συμβατές αλλαγές γίνονται σε μια κύρια έκδοση και όταν καταργείτε μέρος ενός API, θα πρέπει να ενημερώσετε την τεκμηρίωση και να στείλετε μια δευτερεύουσα έκδοση με την κατάργηση, πριν την καταργήσετε αργότερα.
- Ανακοινώστε: εξηγήστε γιατί, δείξτε την αντικατάσταση, δώστε ένα χρονοδιάγραμμα.
- Κατάργηση: σημειώστε το στα έγγραφα και στον κώδικα, με μια προειδοποίηση κονσόλας ή χνούδι που συνδέεται με τον οδηγό.
- Μετεγκατάσταση: παρέχετε έναν γραπτό οδηγό και, για κώδικα, ένα codemod που ενημερώνει αυτόματα τις χρήσεις.
- Κατάργηση: στην επόμενη μεγάλη έκδοση, μόλις η χρήση είναι σχεδόν μηδενική.
Αυτοματοποιήστε τη μετανάστευση
Τα Codemods είναι σενάρια που ξαναγράφουν κώδικα σε μια βάση κώδικα. Εργαλεία όπως το jscodeshift εκτελούν codemods σε πολλά αρχεία JavaScript ή TypeScript ταυτόχρονα, έτσι ώστε η μετονομασία του prop ή η εναλλαγή στοιχείων μπορεί να εφαρμοστεί σε λίγα λεπτά αντί για εβδομάδες. Συνδυάστε τα με κανόνες χνούδι που επισημαίνουν τις υπόλοιπες χρήσεις.
Υιοθεσία μέτρου
Δεν μπορείτε να προγραμματίσετε την αφαίρεση χωρίς να γνωρίζετε ποιος εξακολουθεί να χρησιμοποιεί ένα στοιχείο. Παρακολουθήστε τη χρήση σε κώδικα (εισαγωγές, προειδοποιήσεις για χνούδι) και σε αρχεία σχεδίασης (αναλυτικά στοιχεία βιβλιοθήκης στο εργαλείο σχεδίασής σας). Δημοσιεύστε τους αριθμούς ώστε οι ομάδες να μπορούν να δουν την πρόοδο και βοηθήστε απευθείας τις τελευταίες ομάδες αντί να επιβάλετε προθεσμία.
Μην ξεχνάτε τη σχεδιαστική πλευρά
Καταργήστε το στοιχείο στη βιβλιοθήκη σχεδίασης επίσης: μετονομάστε το με ένα πρόθεμα "Καταργήθηκε", συνδέστε το στοιχείο αντικατάστασης και σταματήστε να εμφανίζεται στην αναζήτηση. Διαφορετικά, οι σχεδιαστές συνεχίζουν να το χρησιμοποιούν σε νέες δουλειές και η μετανάστευση δεν τελειώνει ποτέ. Η κίνηση και η συμπεριφορά αλληλεπίδρασης πρέπει να αποτελούν μέρος των σημειώσεων αλλαγής, επειδή μια αντικατάσταση που κινείται διαφορετικά μπορεί να αισθάνεται σπασμένη ακόμα κι αν φαίνεται η ίδια.
Κλειδί Principles για να θυμάστε
- Ανακοίνωση, κατάργηση, μετεγκατάσταση, κατάργηση: ποτέ μην μεταβείτε κατευθείαν στην αφαίρεση
- Κατάργηση σε μια μικρή έκδοση. αφαιρέστε σε μια μεγάλη έκδοση
- Χρησιμοποιήστε codemods και κανόνες για την αυτοματοποίηση της μετεγκατάστασης
- Παρακολουθήστε τη χρήση τόσο σε αρχεία κώδικα όσο και σε αρχεία σχεδίασης
- Συμπεριλάβετε αλλαγές κίνησης και αλληλεπίδρασης στις σημειώσεις κυκλοφορίας
Συχνές Ερωτήσεις
Πηγές
- Semantic Versioning 2.0.0 — semver.org
- jscodeshift: a JavaScript codemod toolkit — GitHub (Meta)