Projek latihan pemfaktoran semula: cara menstrukturkan kerja kod legasi yang mengajar pengurangan hutang teknikal

Item tidak dijumpai.
Blog imej kecil

Sebuah pasukan mewarisi modul pengebilan yang tiada siapa yang faham sepenuhnya. Ia tiada ujian yang melindungi tingkah laku sedia ada. Satu pecutan dicadangkan untuk "membersihkannya", dan rancangannya adalah untuk menulis semula teras dalam struktur baharu. Tiada siapa yang boleh mengatakan bagaimana mereka akan tahu bahawa versi baharu masih mengenakan bayaran kepada pelanggan dengan betul.

Ini merupakan senario ilustrasi, bukan insiden yang didokumenkan. Ia menerangkan jurang yang perlu ditutup oleh projek latihan pemfaktoran semula: jurutera yang dapat melihat bahawa kod itu tidak kemas, tetapi masih belum dapat merancang penambahbaikan yang terhad dan menunjukkan bahawa tingkah laku telah dikekalkan.

Panduan ini adalah untuk peneraju pembolehubah kejuruteraan dan pengurus kejuruteraan. Ia merangkumi cara menerangkan masalah prestasi, mendiagnosis jurang, penyediaan dan amalan reka bentuk, menyelesaikan kes dan menilai sama ada kemahiran tersebut dipindahkan ke kerja sebenar. Ia mengenai reka bentuk latihan. Kod, ujian dan peraturan dalam program anda harus disahkan oleh jurutera kanan dalam susunan anda sendiri.

Apakah projek latihan pemfaktoran semula?

Projek latihan pemfaktoran semula merupakan satu kerja berstruktur pada kod legasi, yang mana tujuannya adalah untuk membina keupayaan serta menambah baik kod. Pelajar merancang perubahan kecil yang terhad, melindungi tingkah laku sedia ada dengan ujian, menambah baik reka bentuk dalam langkah kecil dan menunjukkan bukti bahawa tiada apa yang rosak. Kod menjadi lebih baik, dan yang lebih penting, jurutera mengamalkan pertimbangan yang mereka perlukan terhadap hutang teknikal sebenar.

fakta Pantas

SoalanJawapan pendek
Apakah tugasan itu?Rancang dan sahkan penambahbaikan kod legasi yang terhad.
Apa yang anda skorkan?Analisis risiko dan bukti bahawa tingkah laku sedia ada telah dikekalkan.
Adakah penulisan semula yang luas merupakan projek latihan yang baik?Biasanya tidak. Ia menyembunyikan kemahiran yang sedang diamalkan dan menyukarkan tingkah laku yang dikekalkan untuk ditunjukkan.
Adakah kuiz tentang pemfaktoran semula corak mencukupi?Tidak. Ia mengesahkan prasyarat, tetapi tidak sama ada jurutera boleh merancang dan mengesahkan perubahan.
Siapakah yang mengesahkan kandungan tersebut?Seorang pengurus kejuruteraan dan seorang jurutera kanan yang mengetahui pangkalan kod.
Apa yang tidak boleh diperbaiki oleh latihan?Peralatan ujian hilang, tekanan pelepasan, pemilikan yang tidak jelas dan tiada masa untuk kerja penyelenggaraan.
Macam mana awak tahu ia berkesan?Satu kes kod legasi baharu yang belum pernah dilihat, dinilai berdasarkan kriteria yang dipersetujui, dengan susulan ke atas kerja sebenar.

1. Huraikan masalah prestasi

Mulakan dengan tugasan: rancang dan sahkan penambahbaikan kod legasi yang terhad. "Terikat" ialah perkataan yang penting. Pelajar memilih perubahan yang cukup kecil untuk diselesaikan dan boleh menyatakan apa yang berada dalam dan di luar skop.

Ia membantu untuk menjadi tepat tentang istilah. Martin Fowler menggambarkan pemfaktoran semula sebagai teknik terkawal untuk menambah baik reka bentuk pangkalan kod sedia ada, terdiri daripada transformasi kecil yang memelihara tingkah laku. Frasa "memelihara tingkah laku" adalah apa yang membezakan pemfaktoran semula daripada penulisan semula, dan itulah yang mesti ditunjukkan oleh latihan. Metafora hutang teknikal itu sendiri telah dicipta oleh Ward Cunningham, dan perbincangan Fowler merupakan peringatan berguna bahawa hutang boleh diambil secara sengaja dan berhemat, jadi bukan setiap modul yang tidak kemas merupakan satu kesilapan yang perlu diperbaiki.

Buku Michael Feathers tentang kod legasi mengambil pendekatan yang sama dalam amalan. Huraian penerbitnya mengatakan ia mengajar pembangun untuk menulis ujian yang memastikan mereka tidak sengaja mengubah aplikasi, dan untuk mengawal perisian sedia ada tanpa penulisan semula sepenuhnya.

Tulis pernyataan prestasi dalam satu ayat dan minta pengurus kejuruteraan menyemaknya: “Memandangkan modul legasi dan matlamat yang ditetapkan, jurutera mencadangkan perubahan terhad, menambah ujian yang menentukan tingkah laku semasa, membuat perubahan dalam langkah kecil dan menunjukkan bahawa tingkah laku dikekalkan.”

2. Diagnosis jurang pembelajaran dan konteks

Sebelum anda membina apa-apa, bandingkan tugasan yang diperlukan dengan apa yang diamalkan dan dinilai oleh aktiviti semasa anda. Tiga soalan biasanya memisahkan jurang latihan daripada sesuatu yang lain:

  1. Adakah amalan semasa menggunakan tugasan sebenar? Jika latihan merangkumi pemfaktoran semula corak dalam slaid, tetapi tiada siapa yang pernah mengubah kod yang belum diuji, tiada siapa yang telah mengamalkan tingkah laku perlindungan. Jika penilaian merupakan ujian aneka pilihan pada bau kod, ia mengukur ingatan.
  2. Apakah permintaan kognitif? Dalam taksonomi semakan Bloom, menilai sama ada perubahan itu selamat terletak pada tahap analisis dan penilaian, dan mereka bentuk pelan dan ujian mencapai tahap penciptaan. Memadankan aktiviti dengan tahap tersebut diliputi dalam panduan kami untuk memadankan aktiviti pembelajaran dengan Taksonomi Bloom.
  3. Adakah sesuatu selain kemahiran menghalang? Periksa kakitangan, peralatan dan prosedur. Jika pembinaan mengambil masa sejam, tiada siapa yang akan menjalankan ujian dengan kerap. Jika kerja penyelenggaraan tidak pernah dijadualkan, jurutera hanya akan mengubah suai secara rahsia. Laporkan punca bukan latihan kepada orang yang boleh membaikinya.

3. Reka bentuk persediaan dan amalan yang bertujuan

Sebaik sahaja anda tahu jurang latihan yang boleh ditutup, berikan setiap peringkat tugas yang berbeza.

Penyediaan. Semak prasyarat dengan diagnostik ringkas: bagaimana rangka kerja ujian anda berfungsi, apakah ujian pencirian dan bagaimana pasukan anda menyemak dan menggabungkannya. Kajian kendiri sesuai dengan peringkat ini. Semakan ingatan semula hanya mengesahkan prasyarat.

Amalan. Gunakan projek pemfaktoran semula yang sistematik dengan bentuk yang jelas. Mulakan dengan sampel yang kecil dan selamat, kemudian beralih kepada bahagian sebenar tetapi terhad pada pangkalan kod anda sendiri. Kata Gilded Rose ialah titik permulaan yang terkenal untuk langkah pertama. README-nya, yang diselenggara oleh Emily Bache, mengesyorkan menulis ujian sebelum menukar kod dan bingkaikan latihan tersebut sebagai amalan dalam mengambil langkah kecil, menjalankan ujian dengan kerap dan menambah baik reka bentuk sedikit demi sedikit. Urutan yang masuk akal untuk setiap projek ialah: tentukan matlamat dan sempadan, tulis ujian yang merangkumi apa yang dilakukan oleh kod hari ini, ubah satu perkara pada satu masa, jalankan ujian selepas setiap langkah dan tuliskan apa yang anda pelajari.

Maklum balas. Hubungkan maklum balas dengan keputusan, bukan dengan skor keseluruhan. "Anda telah mengekstrak logik diskaun, tetapi ujian anda hanya meliputi laluan gembira, jadi anda mungkin tidak perasan perubahan pembundaran" adalah lebih berguna daripada "3 daripada 5".

Input pengajar secara langsung atau ulasan tak segerak? Input langsung menambah nilai paling tinggi apabila pilihan tidak jelas, contohnya sama ada untuk menghentikan dan menambah ujian yang hilang atau meneruskan. Semakan tak segerak sudah memadai apabila pelajar membandingkan rancangan dan ujian mereka dengan versi pakar yang diberi anotasi. Banyak pasukan menggunakan kedua-duanya: persediaan kendiri dahulu, kemudian sesi yang difasilitasi untuk kes-kes yang sukar.

4. Gunakan contoh yang realistik

Ilustrasi. Seorang pengurus kejuruteraan harus mengesahkan kes dan kriteria jawapan sebelum digunakan.

Kes itu. Fungsi legasi mengira jumlah pesanan, termasuk diskaun, cukai dan peraturan penghantaran. Ia tidak mempunyai ujian. Satu pasukan mencadangkan untuk menstruktur semula keseluruhan modul pengebilan untuk menjadikannya "lebih bersih".

Tugas itu. Pelajar menjelaskan apa yang akan mereka lakukan, memetik bukti yang akan mereka kumpulkan, dan menyatakan maklumat atau sokongan lanjut yang mereka perlukan.

Percubaan pertama. “Saya akan membahagikan modul ini kepada tiga perkhidmatan dan mengalihkan logiknya, kemudian menyemak nombor dalam pementasan.” Pelajar telah memilih perubahan besar dan pemeriksaan manual yang lewat. Tiada cara untuk mengetahui sama ada versi lama dan baharu bersetuju pada kes pinggir.

Maklum balas dan cuba semula. Pengulas bertanya apa yang dilakukan oleh fungsi hari ini untuk bakul kosong, diskaun yang menjadikan jumlah negatif dan kes pembundaran. Percubaan semula meminta pelajar untuk menyempitkan skop kepada satu tingkah laku dan menyatakan bagaimana mereka akan membuktikan ia tidak berubah.

Percubaan yang lebih kuat. “Saya akan membiarkan struktur modul sahaja buat masa ini. Saya akan merekodkan apa yang dikembalikan oleh fungsi jumlah pesanan hari ini untuk satu set input, termasuk kes pinggir, sebagai ujian. Kemudian saya akan mengekstrak pengiraan diskaun ke dalam fungsinya sendiri, menjalankan ujian selepas langkah tunggal itu dan berhenti. Saya akan perhatikan bahawa peraturan penghantaran mempunyai tingkah laku yang saya tidak fahami dan bertanya kepada rakan sekerja sebelum menyentuhnya.” Perhatikan bahawa jawapan ini mengehadkan perubahan, melindungi tingkah laku terlebih dahulu dan menamakan apa yang tidak diketahui.

Mengapa setiap respons boleh dipertahankan atau tidak lengkap. Nilaikan setiap satu berdasarkan kriteria yang diluluskan, bukan pilihan pengulas. Percubaan pertama mungkin merupakan hala tuju jangka panjang yang munasabah tetapi tidak lengkap sebagai pelan, kerana ia tidak membawa bukti tingkah laku yang dikekalkan. Percubaan yang lebih kuat adalah kecil, boleh disemak dan jujur ​​tentang ketidakpastian.

5. Menilai keupayaan dan merancang pemindahan

Bukti keupayaan ialah prestasi pada kes kod legasi baharu yang belum dilihat oleh pelajar. Nilaikan analisis risiko dan bukti bahawa tingkah laku telah dikekalkan. Rubrik mudah menggunakan skala 0 hingga 2 setiap kriteria:

kriteriaBukti yang boleh diperhatikan
Pelaksanaan tugasMerancang dan mengesahkan penambahbaikan kod legasi terhad, dan merekodkan tindakan dan bukti di sebaliknya.
PenaakulanMenerangkan kekangan, alternatif dan ketidakpastian, serta menyemak risiko dan bukti bahawa tingkah laku telah dikekalkan.
SempadanMenggunakan prosedur yang diluluskan dan meminta bantuan apabila maklumat atau kuasa tidak mencukupi.

Sauh: 0 tiada atau tidak disokong, 1 separa dengan peninggalan yang berkaitan, dan 2 lengkap dan dijustifikasikan berdasarkan kriteria yang dipersetujui. Takrifkan ralat kritikal secara berasingan, seperti mengubah tingkah laku tanpa ujian yang akan disedari, jadi skor keseluruhan tidak dapat menyembunyikannya. Rubrik ini adalah cadangan, bukan standard kesediaan yang disahkan: sesuaikannya dengan pengurus kejuruteraan dan rintiskannya. Panduan kami untuk mereka bentuk amalan interaktif dengan maklum balas yang berguna menunjukkan cara menulis maklum balas yang dikaitkan dengan keputusan.

Rancang pemindahan dengan sengaja. Selepas latihan, berikan setiap jurutera sedikit hutang sebenar untuk ditangani dengan pengulas, atau jalankan tinjauan ringkas tentang perubahan terbaru yang menjejaskan sesuatu. Semak pemindahan selepas pendedahan yang sesuai kepada kerja sebenar, bukan sejurus selepas bengkel.

Di mana penghantaran interaktif membantu

Format interaktif membantu di mana setiap orang harus komited sebelum mereka melihat kumpulan. Dalam sesi langsung, fasilitator boleh menunjukkan coretan legasi pendek, meminta setiap jurutera untuk menyerahkan perubahan pertama yang akan mereka buat dan bagaimana mereka akan membuktikannya selamat, dan kemudian mendedahkan penyebaran sebelum perbincangan. Gesaan yang sama boleh dijalankan mengikut rentak kendiri untuk persediaan. AhaSlides menyokong pembelajaran interaktif dan beralih antara penyampaian langsung dan mengikut rentak kendiri. Ia adalah alat pembentangan dan pembelajaran, bukan tempat untuk menjalankan atau menganalisis kod, jadi jalankan pemfaktoran semula itu sendiri dalam persekitaran anda sendiri. Semak sebarang fungsi pengarangan, maklum balas atau pelaporan tertentu yang anda rancang untuk andalkan berbanding aliran kerja anda sendiri. Untuk panduan tentang memilih format, lihat artikel kami tentang bila perlu menggunakan pembelajaran adaptif, interaktif dan secara langsung.

Ukur apa yang berubah

Tentukan terlebih dahulu apa yang akan menunjukkan bahawa jurutera boleh melakukan tugas tersebut. Bandingkan kualiti analisis risiko dan bukti tingkah laku yang dikekalkan pada kes yang tidak kelihatan, dengan garis dasar. Tentukan siapa yang disertakan, penyebut dan masa. Jika keputusan bertambah baik, semak apa lagi yang berubah dalam tempoh yang sama, seperti perkakasan ujian baharu, binaan yang lebih pantas atau perubahan pemilikan, sebelum mengkreditkan latihan tersebut.

Kekangan yang mungkin kekal

  • Masa untuk kerja-kerja penyelenggaraan. Jika kerja hutang tidak pernah dijadualkan, jurutera terlatih masih tiada tempat untuk menggunakan kemahiran tersebut.
  • Uji perkakasan. Tanpa abah-abah ujian yang boleh digunakan atau binaan yang pantas, langkah kecil dan pemeriksaan yang kerap sukar untuk dikekalkan.
  • Perlindungan kes. Satu kes legasi menunjukkan beberapa jenis risiko. Skor tidak menggambarkan penilaian jurutera secara umum.
  • Menilai bila tidak perlu difaktorkan semula. Sesetengah kod lebih baik dibiarkan begitu sahaja, diganti atau dihentikan, dan keputusan itu melibatkan lebih daripada sekadar kemahiran.
  • Pindahkan. Prestasi dalam kata tidak sama dengan prestasi dalam modul pengeluaran di bawah tekanan penghantaran.

Nyatakan perkara ini kepada penaja lebih awal dan rancang pembaikan berasingan. Latihan meningkatkan apa yang boleh dirancang dan dibuktikan oleh jurutera. Ia tidak mewujudkan masa atau peralatan.

Soalan lazim

Apakah projek latihan pemfaktoran semula?

Ia merupakan amalan berstruktur pada kod legasi di mana jurutera merancang perubahan kecil, melindungi tingkah laku sedia ada dengan ujian, mengubah reka bentuk dalam langkah kecil dan menunjukkan bahawa tiada apa yang rosak.

Adakah penulisan semula penuh merupakan cara yang baik untuk mempelajari tentang hutang teknikal?

Biasanya tidak. Penulisan semula adalah besar, sukar untuk disahkan dan menyembunyikan kemahiran yang anda ingin bina. Perubahan terhad dengan ujian yang menangkap tingkah laku semasa menjadikan penaakulan kelihatan.

Bagaimanakah anda menilai sama ada jurutera boleh melakukan refactor dengan selamat?

Berikan kes kod legasi baharu dan skor analisis risiko serta bukti bahawa tingkah laku telah dikekalkan berdasarkan kriteria yang dipersetujui. Kuiz tentang corak pemfaktoran semula hanya mengesahkan prasyarat.

Adakah anda memerlukan contoh pangkalan kod untuk latihan ini?

Anda memerlukan tempat untuk berlatih dengan selamat. Banyak pasukan bermula dengan kata awam dan kemudian beralih ke bahagian kod mereka sendiri yang terhad. Pengurus kejuruteraan anda harus mengesahkan bahawa kod tersebut sesuai.

Di mana untuk bermula

Pilih satu jenis perubahan legasi kecil yang berulang dalam pangkalan kod anda. Tulis pernyataan prestasi, minta pengurus kejuruteraan mengesahkan kes dan ujian yang akan menunjukkan tingkah laku yang dikekalkan, dan draf rubrik tiga kriteria dengan skala 0 hingga 2 dan senarai ralat kritikal. Lakukan percubaan dengan kumpulan kecil sebelum anda melancarkannya.

Untuk melihat bagaimana latihan keputusan pemfaktoran semula boleh dijalankan secara langsung dengan pasukan anda sendiri, dan digunakan semula mengikut rentak selepas itu, terokai AhaSlides.

Langgan untuk mendapatkan petua, cerapan dan strategi untuk meningkatkan penglibatan khalayak.
Terima kasih! Penyerahan anda telah diterima!
Alamak! Kesalahan berlaku semasa menghantar borang.

Semak siaran lain

AhaSlides digunakan oleh 500 syarikat teratas Forbes America. Alami kuasa penglibatan hari ini.

Mulakan percuma
© 2026 AhaSlides Pte Ltd