Menghentikan Penggunaan Komponen Sistem Desain Tanpa Merusak Tim Produk
Cara meluncurkan perubahan sistem desain yang dapat menyebabkan gangguan pada aplikasi besar: mengumumkan, menghentikan penggunaan, bermigrasi dengan codemod, dan menghapusnya, menggunakan pembuatan versi semantik dan pelacakan penggunaan.
Pengambilan Inti
Penghentian komponen dalam empat langkah: umumkan perubahan beserta alasan dan penggantinya, tandai komponen lama tidak digunakan lagi dalam rilis minor dengan peringatan yang jelas, bantu tim bermigrasi dengan panduan dan codemod otomatis, dan hapus komponen tersebut hanya pada rilis besar berikutnya. Lacak berapa banyak layar yang masih menggunakannya di setiap langkah, dan jangan menghapusnya hingga penggunaan mendekati nol.
Mengapa penghentian menjadi salah
Perubahan sistem desain gagal ketika mengejutkan tim produk: sebuah komponen menghilang dalam pembaruan, build terhenti, dan tim menyematkan versi lama dan menghentikan peningkatan. Jika hal ini terjadi, sistem akan kehilangan manfaat utamanya, yaitu konsistensi, karena bagian produk yang berbeda beralih ke versi yang berbeda.
Proses empat langkah
Pembuatan versi semantik memberikan kontrak sederhana: perubahan yang tidak kompatibel akan dimasukkan ke dalam versi utama, dan ketika Anda menghentikan penggunaan sebagian API, Anda harus memperbarui dokumentasi dan mengirimkan rilis kecil dengan penghentian tersebut, sebelum menghapusnya nanti.
- Umumkan: jelaskan alasannya, tunjukkan penggantinya, berikan garis waktunya.
- Tidak berlaku lagi: tandai di dokumen dan kode, dengan konsol atau peringatan lint yang tertaut ke panduan.
- Migrasi: memberikan panduan tertulis dan, untuk kode, codemod yang memperbarui penggunaan secara otomatis.
- Hapus: di rilis besar berikutnya, setelah penggunaan mendekati nol.
Otomatiskan migrasi
Codemods adalah skrip yang menulis ulang kode di seluruh basis kode. Alat seperti jscodeshift menjalankan codemod pada banyak file JavaScript atau TypeScript sekaligus, sehingga penggantian nama prop atau pertukaran komponen dapat diterapkan dalam hitungan menit, bukan minggu. Pasangkan dengan aturan lint yang menandai penggunaan yang tersisa.
Ukur adopsi
Anda tidak dapat merencanakan penghapusan tanpa mengetahui siapa yang masih menggunakan komponen tersebut. Lacak penggunaan kode (impor, peringatan lint) dan file desain (analisis perpustakaan di alat desain Anda). Publikasikan angka-angkanya sehingga tim dapat melihat kemajuannya, dan bantu beberapa tim terakhir secara langsung daripada memaksakan tenggat waktu.
Jangan lupakan sisi desainnya
Juga tidak berlaku lagi komponen di pustaka desain: ganti namanya dengan awalan "Tidak berlaku lagi", tautkan ke penggantinya, dan hentikan kemunculannya dalam penelusuran. Jika tidak, desainer akan terus menggunakannya dalam karya baru dan migrasi tidak akan pernah berakhir. Perilaku gerak dan interaksi harus menjadi bagian dari catatan perubahan, karena pengganti yang bergerak berbeda bisa terasa rusak meski terlihat sama.
Kunci Principles untuk Diingat
- Umumkan, hentikan penggunaan, migrasi, hapus: jangan langsung menghapus
- Tidak berlaku lagi dalam rilis minor; hapus dalam rilis besar
- Gunakan codemod dan aturan lint untuk mengotomatiskan migrasi
- Lacak penggunaan dalam kode dan file desain
- Sertakan perubahan gerakan dan interaksi dalam catatan rilis
Pertanyaan yang Sering Diajukan
Sumber
- Semantic Versioning 2.0.0 — semver.org
- jscodeshift: a JavaScript codemod toolkit — GitHub (Meta)