Ini diinginkan untuk dihapus b()
setelah tidak lagi digunakan, karena alasan yang sama diinginkan untuk tidak menambahkan fungsi yang tidak digunakan di tempat pertama. Apakah Anda menyebutnya "keterbacaan" atau sesuatu yang lain, semua yang dianggap sama itu merupakan peningkatan pada kode yang tidak mengandung apa pun yang tidak ada gunanya. Demi memiliki setidaknya satu ukuran spesifik yang lebih baik tidak memilikinya, menghapusnya menjamin bahwa biaya pemeliharaan di masa depan setelah perubahan itu nol!
Saya belum menemukan teknik khusus yang diperlukan untuk benar-benar menghapusnya dengan tes, karena ada pemikiran untuk mengganti b()
dengan sesuatu yang baru tentu saja harus disertai dengan pertimbangan semua kode yang sedang dipanggil b()
, dan tes adalah bagian dari "semua kode ".
Garis penalaran yang umumnya bekerja untuk saya adalah bahwa pada titik di mana saya perhatikan yang f()
telah menjadi b()
usang, karena itu b()
harus paling tidak usang, dan saya mencari untuk menemukan semua panggilan b()
dengan maksud untuk menggantikannya dengan panggilan ke f()
, saya pertimbangkan juga kode tes . Secara khusus, jikab()
tidak lagi diperlukan maka saya bisa dan harus menghapus tes unitnya.
Anda benar bahwa tidak ada yang memaksa saya untuk memperhatikan bahwa b()
tidak lagi diperlukan. Itu masalah keterampilan (dan, seperti kata ramping, laporan cakupan kode pada tes tingkat yang lebih tinggi). Jika hanya tes unit, dan tidak ada tes fungsional, lihat b()
, maka saya bisa optimis dengan hati-hati bahwa itu bukan bagian dari antarmuka yang diterbitkan dan oleh karena itu menghapus itu bukan perubahan yang melanggar untuk kode apa pun yang tidak di bawah kendali langsung saya.
Siklus merah / hijau / refactor tidak secara eksplisit menyebutkan tes pelepasan. Selanjutnya, menghapus b()
melanggar terbuka / tertutup prinsip karena jelas komponen Anda adalah terbuka untuk modifikasi. Jadi jika Anda ingin menganggap langkah ini sebagai sesuatu di luar TDD sederhana, silakan. Misalnya, Anda mungkin memiliki beberapa proses untuk mendeklarasikan tes "buruk", yang dapat diterapkan dalam kasus ini untuk menghapus tes dengan alasan tes untuk sesuatu yang seharusnya tidak ada di sana (fungsi yang tidak perlu)b()
).
Saya pikir dalam praktiknya kebanyakan orang mungkin mengizinkan sejumlah desain ulang untuk dilakukan bersamaan dengan siklus merah / hijau / refactor, atau mereka menganggap menghapus tes unit redundan sebagai bagian valid dari "refactor" meskipun secara tegas berbicara itu bukan refactoring. Tim Anda dapat memutuskan berapa banyak drama dan dokumen yang harus dilibatkan dalam membenarkan keputusan ini.
Lagi pula, jika b()
itu penting maka akan ada tes fungsional untuk itu, dan itu tidak akan dihapus ringan, tetapi Anda sudah mengatakan bahwa hanya ada tes unit. Jika Anda tidak benar membedakan antara tes unit (ditulis dengan desain internal kode saat ini, yang telah Anda ubah) dan tes fungsional (ditulis ke antarmuka yang diterbitkan, yang mungkin Anda tidak ingin ubah) maka Anda harus lebih berhati-hati tentang menghapus unit test.