Saya refactoring kelas kode warisan besar. Refactoring (saya kira) menganjurkan ini:
- tulis tes untuk kelas warisan
- refactor sih keluar dari kelas
Masalah: setelah saya refactor kelas, tes saya pada langkah 1 perlu diubah. Sebagai contoh, apa yang tadinya dalam metode warisan, sekarang mungkin menjadi kelas yang terpisah sebagai gantinya. Apa yang dulu satu metode mungkin sekarang beberapa metode. Seluruh lanskap kelas legacy dapat dilenyapkan menjadi sesuatu yang baru, sehingga tes yang saya tulis di langkah 1 akan hampir batal dan tidak berlaku. Intinya saya akan menambahkan Langkah 3. menulis ulang tes saya sebanyak-banyaknya
Apa tujuan menulis tes sebelum refactor? Kedengarannya lebih seperti latihan akademis untuk menciptakan lebih banyak pekerjaan untuk saya sendiri. Saya menulis tes untuk metode sekarang dan saya belajar lebih banyak tentang cara menguji sesuatu dan cara kerja metode legacy. Seseorang dapat mempelajari ini dengan hanya membaca kode warisan itu sendiri, tetapi menulis tes hampir seperti menggosok hidung saya di dalamnya, dan juga mendokumentasikan pengetahuan sementara ini dalam tes terpisah. Jadi dengan cara ini saya hampir tidak punya pilihan selain mempelajari apa yang dilakukan kode. Saya katakan sementara di sini, karena saya akan refactor heck keluar dari kode dan semua dokumentasi dan tes saya akan batal demi hukum untuk sebagian yang signifikan, kecuali pengetahuan saya akan tetap dan memungkinkan saya untuk menjadi lebih segar di refactoring.
Apakah itu alasan sebenarnya untuk menulis tes sebelum refactor - untuk membantu saya memahami kode dengan lebih baik? Pasti ada alasan lain!
Tolong jelaskan!
catatan:
Ada posting ini: Apakah masuk akal untuk menulis tes untuk kode warisan ketika tidak ada waktu untuk refactoring lengkap? tetapi dikatakan "menulis tes sebelum refactor", tetapi tidak mengatakan "mengapa", atau apa yang harus dilakukan jika "menulis tes" sepertinya "pekerjaan sibuk yang akan segera dihancurkan"