Kod Legasi Menjadi Semakin Buruk Seiring Usia
Kod legasi tidak menjadi lebih baik dari semasa ke semasa. Ia menjadi semakin buruk.
Minggu lepas, saya menghabiskan masa tiga jam untuk membaiki pepijat. Sepatutnya ia hanya mengambil masa 20 minit. Masalahnya berpunca daripada modul pengesahan dari tahun 2019. Semua orang mengabaikannya kerana "ia berfungsi." Hakikatnya, ia tidak berfungsi. Saya menemui komen TODO dari tahun 2020 di dalam fail tersebut.
Ramai orang menganggap kod legasi seperti hutang pilihan. Mereka fikir mereka boleh membayarnya semula apabila mempunyai masa. Kod legasi lebih menyerupai kulat. Ia merebak. Ia mencemari bahagian lain dalam sistem anda. Semakin lama anda mengabaikannya, semakin mahal kos untuk membersihkannya.
Ini mewujudkan kitaran yang buruk:
- Anda mewarisi projek yang berselerak.
- Anda menambah satu lagi pernyataan
ifuntuk memastikan ciri anda berfungsi. - Enam bulan kemudian, orang lain melakukan perkara yang sama.
- Setahun kemudian, fail tersebut mempunyai 800 baris kod dan sifar ujian.
Kod yang "berfungsi" ini mempunyai kos tersembunyi:
- Kelajuan pembangunan menurun. Anda menghabiskan lebih banyak masa membaca konteks berbanding menulis kod.
- Pepijat meningkat. Membaiki satu perkara merosakkan perkara yang lain.
- Proses onboarding menjadi sukar. Pembangun baharu bergelut untuk memahami mengapa logik diduplikasi di mana-mana.
Perhatikan tanda-tanda amaran ini:
- Komen yang tidak berguna atau mengelirukan.
- Logik perniagaan yang diduplikasi dalam fail yang berbeza.
- Kebergantungan kitaran (circular dependencies) dan gandingan tinggi (high coupling).
Jangan cuba menulis semula segalanya. Penulisan semula secara menyeluruh gagal sebanyak 80% daripada masa. Anda menghabiskan masa berbulan-bulan membina semula apa yang sudah sedia ada sementara perniagaan menunggu ciri-ciri baharu.
Gunakan refactoring secara berperingkat dengan ujian karakterisasi (characterization tests):
- Tangkap tingkah laku semasa dengan ujian, walaupun ia pelik.
- Lakukan refactor tanpa mengubah tingkah laku tersebut.
- Ulang sehingga kod tersebut boleh dibaca.
- Hanya selepas itu, ubah tingkah laku dengan ujian yang sebenar.
Ikuti peraturan ini untuk mengelakkan perangkap:
- Jangan sekali-kali melakukan refactor tanpa ujian.
- Jangan ubah tingkah laku semasa melakukan refactor. Pepijat mungkin merupakan ciri tidak didokumentasikan yang bergantung kepada pelanggan.
- Biarkan kod yang "senyap" tanpa gangguan. Jika sesuatu modul tidak berubah dalam masa tiga tahun dan tidak menyebabkan sebarang masalah, biarkan sahaja.
Fokuskan tenaga anda pada kod yang kerap anda sentuh.
Sumber: https://dev.to/taina_costa_f/legacy-code-nao-envelhece-como-vinho-quanto-mais-espera-pior-fica-132h
