Saya membaca The Art of Unit Testing oleh Roy Osherove. Saya di bagian 7.2. Menulis tes yang dapat dipertahankan di mana penulis memiliki catatan tentang bau kode ini:
CATATAN: Saat Anda menyatakan status internal agar terlihat oleh tes luar, apakah itu dapat dianggap sebagai bau kode (tanda bahwa ada sesuatu yang salah dalam desain atau logika kode)? Ini bukan bau kode ketika Anda refactoring untuk mengekspos kolaborator. Ini bau kode jika Anda melakukan refactoring dan tidak ada kolaborator (jadi Anda tidak perlu mematikan atau mengejek apa pun).
EDIT : Apa yang penulis maksudkan dengan "kolaborator" adalah dependensi. Beberapa contohnya untuk dependensi adalah kelas yang mengakses database atau yang mengakses sistem file OS. Di sinilah ia mendefinisikan rintisan dan mulai menggunakan kata kolaborator:
Sebuah rintisan adalah pengganti dikontrol untuk yang sudah ada ketergantungan (atau kolaborator ) dalam sistem.
Penulis tidak memiliki contoh bau kode ini dan saya mengalami kesulitan memahami / membayangkan seperti apa bentuknya. Dapatkah seseorang menjelaskan hal ini sedikit lebih banyak dan mungkin memberikan contoh nyata?