Apakah itu kod warisan dan cara bekerja dengannya
Sumber: Dou Lambat laun, seorang pengaturcara mungkin perlu menemui kod warisan. Untuk meringankan akibat perkenalan ini, saya telah memilih beberapa petua dan contoh praktikal daripada pengalaman saya sendiri - khususnya, bekerja dengan sistem Java warisan.Ciri Legasi
Warisan ialah kod orang lain, yang selalunya sangat mengerikan sehingga tidak jelas cara menggunakannya. Dan jika anda perlu bekerja dengan sistem warisan, sebagai tambahan kepada kod lama, anda juga akan menghadapi:- dengan teknologi ketinggalan zaman;
- seni bina heterogen;
- kekurangan atau ketiadaan lengkap dokumentasi.
-
Kita tidak boleh tidak menghormati sistem yang menghasilkan berjuta-juta atau diakses oleh beribu-ribu orang sehari. Tidak kira betapa buruknya ia ditulis, kod menjijikkan ini kekal sehingga pengeluaran dan berfungsi 24/7.
-
Memandangkan sistem ini membawa wang sebenar, bekerja dengannya datang dengan tanggungjawab yang besar. Ini bukan permulaan, tetapi sesuatu yang pengguna akan bekerjasama esok. Ini juga membayangkan kos ralat yang sangat tinggi, dan perkara di sini bukan dalam tuntutan pelanggan, tetapi dalam keadaan sebenar.
Kejuruteraan terbalik
Untuk berjaya menggunakan kod warisan, anda perlu menggunakan teknik kejuruteraan terbalik. Pertama, anda perlu membaca kod dengan teliti untuk memahami dengan tepat cara ia berfungsi. Ini adalah wajib, kerana kemungkinan besar kami tidak akan mempunyai dokumentasi. Jika kita tidak memahami aliran pemikiran penulis, kita akan membuat perubahan dengan akibat yang tidak dapat diramalkan. Untuk melindungi diri anda daripada ini, anda juga perlu menyelidiki kod bersebelahan. Dan pada masa yang sama bergerak bukan sahaja secara luas, tetapi juga secara mendalam. Di manakah kaedah dipanggil dengan ralat? Dari manakah kod yang memanggilnya? Dalam projek warisan, "hierarki panggilan" dan "hierarki jenis" digunakan lebih kerap daripada yang lain. Anda perlu menghabiskan banyak masa dengan penyahpepijat: pertama, untuk mencari ralat, dan kedua, untuk memahami cara semuanya berfungsi. Bagi dokumentasi, bukanlah idea yang buruk untuk menggunakan arkeologi industri. Ia boleh menjadi sangat berguna untuk menggali dokumentasi lama di suatu tempat dan bercakap dengan mereka yang mengingati cara kod yang anda warisi ditulis. Menggunakan teknik ini, lambat laun anda akan mula memahami kod tersebut. Tetapi untuk mengelakkan usaha anda daripada menjadi sia-sia, anda mesti segera mendokumenkan hasil penyelidikan anda. Untuk melakukan ini, saya mengesyorkan melukis gambar rajah blok atau gambar rajah jujukan. Sudah tentu, anda akan malas, tetapi anda pasti perlu melakukan ini, jika tidak dalam enam bulan tanpa dokumentasi anda akan menggali kod ini seperti kali pertama.Jangan tulis semula kod
Perkara yang paling penting dalam proses pembangunan adalah untuk mengalahkan diri anda tepat pada masanya dan tidak cuba menulis semula keseluruhan kod dari awal. Anggarkan berapa tahun manusia yang diperlukan. Tidak mungkin pelanggan ingin membelanjakan begitu banyak wang untuk membuat semula sesuatu yang telah berjaya. Ini terpakai bukan sahaja kepada sistem secara keseluruhan, tetapi juga untuk mana-mana bahagiannya. Sudah tentu, mereka mungkin memberi anda masa seminggu untuk memikirkan segala-galanya, dan seminggu lagi untuk membetulkan sesuatu. Tetapi mereka tidak mungkin memberi anda dua bulan untuk menulis sebahagian daripada sistem itu semula. Sebaliknya, laksanakan fungsi baharu dalam gaya yang sama seperti kod yang lain. Dalam erti kata lain, jika kod itu sudah lama, anda tidak seharusnya tergoda untuk menggunakan teknologi baharu yang cantik: kod tersebut kemudiannya akan menjadi sangat sukar untuk dibaca. Sebagai contoh, anda mungkin menghadapi situasi seperti yang kami alami: sebahagian daripada sistem ditulis dalam Spring MVC, dan sebahagian ditulis dalam servlet kosong. Dan jika dalam bahagian yang ditulis dalam servlets, sesuatu yang lain perlu ditambah, maka kami menambahnya dengan cara yang sama - dalam servlets.Hormati kepentingan perniagaan
Perlu diingat bahawa apa-apa tugas ditentukan, pertama sekali, oleh nilai untuk perniagaan. Jika anda tidak membuktikan kepada pelanggan keperluan untuk perubahan tertentu dari sudut perniagaan, perubahan ini tidak akan berlaku. Dan untuk meyakinkan pelanggan, anda mesti cuba berdiri di tempatnya dan memahami minatnya. Khususnya, jika anda ingin memfaktorkan semula hanya kerana kod itu sukar dibaca, anda tidak akan dibenarkan melakukannya, dan anda perlu menjalaninya. Jika anda benar-benar tidak tahan, anda boleh menyusun semula kod secara senyap dan sedikit demi sedikit, menyebarkan kerja merentasi tiket perniagaan. Atau meyakinkan pelanggan bahawa ini, sebagai contoh, akan mengurangkan masa yang diperlukan untuk mencari kesilapan, dan oleh itu akhirnya mengurangkan kos.Ujian
Adalah jelas bahawa ujian adalah perlu dalam mana-mana projek. Tetapi apabila bekerja dengan sistem warisan, perhatian khusus mesti diberikan kepada ujian juga kerana kesan perubahan yang dibuat tidak selalu dapat diramalkan. Anda memerlukan sekurang-kurangnya seberapa banyak penguji sebagai pembangun, jika tidak, anda harus sangat mahir dalam automasi. Dalam projek kami, ujian terdiri daripada fasa berikut:- Pengesahan, apabila fungsi yang dilaksanakan bagi sesuatu ciri disemak dalam cawangan berasingan.
- Penstabilan, apabila cawangan keluaran diperiksa di mana semua ciri digabungkan bersama.
- Pensijilan, apabila perkara yang sama dijalankan semula pada kes ujian yang sedikit berbeza dalam persekitaran pensijilan yang sedekat mungkin dengan pengeluaran dari segi ciri dan konfigurasi perkakasan.
GO TO FULL VERSION